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 に答える