Tengo tres fragmentos de código. Este:¿Por qué esta inicialización doble con una coma es ilegal?
1,7; //yes, that's all the code
compila bien. Este:
double d = (1, 7);
también compila bien. Sin embargo, este:
double d = 1, 7;
no se compila. gcc-4.3.4 dice
error: expected unqualified-id before numeric constant
y Visual C++ 10 dice
error C2059: syntax error : 'constant'
Por qué esa diferencia? ¿Por qué los tres no compilan con ,
teniendo el mismo efecto en los tres?
creo que la gramática sería realmente muy peludas para tratar el 'doble d = 1, 7;' como una sola declarador, con '1, 7' como la expresión de inicialización, mientras que el tratamiento de' doble d = 1, e = 7; 'como dos declaradores. ¿O iría aún más lejos, y diría que si ya hay un alcance 'e' entonces 'doble d = 1, e = 7;' debería * también * ser tratado como un único declarador, con la expresión de inicializador '1, e = 7'? Veo un gran potencial de confusión, solo para guardar escribiendo un par de parens en el caso 'double d = (1, 7);' que de todos modos no tiene sentido. –