Talk:c/language/conversion
[edit] Array to pointer conversion
I read in stackoverflow that including _Alignof in the list of exceptions of paragraph 6.3.2.1/3 is an error because "An array cannot be operand of _Alignof, the syntax is _Alignof ( type-name )." In other words, the standard does not specify _Alignof expression like it does for sizeof. Does the error exist? Should this page mention it?Newatthis (talk) 06:30, 13 April 2016 (PDT)
- thanks for bringing it up. This was actually a difference between the n1570 draft and C11 standard proper (in fact, removal of _Alignof from 6.3.2.1p2, p3, p4, fn. 65; and 6.7.1 fn. 121. was the only non-trivial change). --Cubbi (talk) 07:44, 13 April 2016 (PDT)
[edit] Function to pointer conversion
Function designators are not lvalues, according to a reputable entry in stackoverflow. Yet, this header appears indented under "Lvalue conversions" alongside "Lvalue to value" and "Array to pointer conversion," thereby implying that "Function to pointer conversion" is a form of lvalue conversion. Should "Function to pointer conversion" have the same indention as "Lvalue conversions?" Also, "lvalue conversion" does not appear in 6.3.2.1/3, so I question the indention of "Array to pointer conversion." Newatthis (talk) 12:20, 14 April 2016 (PDT)
- It would be wrong to break up that category of conversions. I'll try to come up with a different name. --Cubbi (talk) 12:59, 14 April 2016 (PDT)
- I understand your concern about breaking up that category of conversions since the three conversions appear as a group under 6.3.2.1. The new title that you chose removes the implication that the conversions described in /3 and /4 are lvalue conversions. As I understand 6.3.2.1, only the conversion described in /2 is an lvalue conversion. The conversion described in /3 starts with an lvalue, but it is not an lvalue conversion. The conversion in /4 starts with an rvalue. Regarding your choice, I am studying the word "value" as it sits in the context of the rest of the page. The standard uses "Other operands." I do not have an alternate suggestion at this time. Newatthis (talk) 03:24, 15 April 2016 (PDT)
- They are not grouped here because they happen to appear in adjacent paragraphs in the C standard: if someone wants to read the C standard, they know where to find it. They are grouped because of what they do (change the value category) and how they are used (in addition to, rather than in place of, other conversions). --Cubbi (talk) 07:56, 15 April 2016 (PDT)
- I understand your concern about breaking up that category of conversions since the three conversions appear as a group under 6.3.2.1. The new title that you chose removes the implication that the conversions described in /3 and /4 are lvalue conversions. As I understand 6.3.2.1, only the conversion described in /2 is an lvalue conversion. The conversion described in /3 starts with an lvalue, but it is not an lvalue conversion. The conversion in /4 starts with an rvalue. Regarding your choice, I am studying the word "value" as it sits in the context of the rest of the page. The standard uses "Other operands." I do not have an alternate suggestion at this time. Newatthis (talk) 03:24, 15 April 2016 (PDT)