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

Arm*_*yan 3 c++ syntax comma-operator

double x = 0,1;
Run Code Online (Sandbox Code Playgroud)

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

C2059 syntax error : 'constant'
Run Code Online (Sandbox Code Playgroud)

确实知道那里有一个逗号而不是一个点,但上面的行不应该被解释为以下几行吗?

double x = (0,1); //which is double x = 1;
Run Code Online (Sandbox Code Playgroud)

顺便提一下,初始化用括号成功编译.

我正在考虑operator ,优先级低的行operator =,但在这种情况下=不是运算符,所以这应该不是问题.什么句法规则决定了这一点

 double x = 0,1; 
Run Code Online (Sandbox Code Playgroud)

应该是非法的?

Luc*_*ore 11

好吧,它被视为

double x = 0; double 1;
Run Code Online (Sandbox Code Playgroud)

这就是为什么.就像你写的那样

double x = 0, y;
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*e S 7

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

double x = 0, y = 1;
Run Code Online (Sandbox Code Playgroud)

要么

double x = 0, y;
Run Code Online (Sandbox Code Playgroud)

你输入的是相当于

double x = 0;
double 1; 
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的.