为什么double x = 0,1;不编译


double x = 0,1;

不编译(在MSVC9.0上尝试)。错误是

C2059 syntax error : 'constant'

i do 意识到那里有一个逗号,而不是要点,但是上面的行不应该解释为以下内容?

double x = (0,1); //which is double x = 1;

顺便说一句,初始化用括号成功编译。

我一直在思考operator ,operator =低的优先级,但是在这种情况下,=不是操作员,因此这不是问题。什么句法规则决定

 double x = 0,1; 

应该是非法的吗?

好吧,它被视为

double x = 0; double 1;

这就是原因。就像你写

double x = 0, y;

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

在声明期间,在没有括号的情况下,逗号被视为声明之间的分离器。例如:

double x = 0, y = 1;

double x = 0, y;

您输入的是

的等效物
double x = 0;
double 1; 

显然是不正确的。

相关内容

  • 没有找到相关文章