【发布时间】:2012-10-20 05:13:02
【问题描述】:
double x = 0,1;
无法编译(在 MSVC9.0 上尝试)。错误是
C2059 syntax error : 'constant'
我确实意识到那里有一个逗号而不是一个点,但是上面的行不应该被解释为下面的吗?
double x = (0,1); //which is double x = 1;
顺便说一句,使用括号初始化编译成功。
我认为operator , 的优先级低于operator =,但在这种情况下= 不是运算符,所以这应该不是问题。什么句法规则决定了
double x = 0,1;
应该是非法的?
【问题讨论】:
-
这不只是因为通常你有
double x = 0, y;吗? -
有趣的问题,最初我认为它也应该编译。 :)
-
请注意,如果您编写
double(x)(1), y;,这是一个有效的声明,但也可以解析为表达式。
标签: c++ syntax comma-operator