3
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; 

应该是非法的吗?

4

2 回答 2

11

好吧,它被视为

double x = 0; double 1;

这就是为什么。就像你写的一样

double x = 0, y;

这是声明的语法,您只是试图声明1为变量(这是错误的)。不要以为还有很多...

于 2012-10-30T19:21:44.307 回答
7

在声明期间,没有括号的逗号被视为声明之间的分隔符。例如:

double x = 0, y = 1;

或者

double x = 0, y;

您输入的内容相当于

double x = 0;
double 1; 

这显然是不正确的。

于 2012-10-30T19:23:15.880 回答