Почему double x = 0,1; не компилировать?

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;

должен быть незаконным?

3

Решение

Во время объявлений запятая при отсутствии скобок рассматривается как разделитель между объявлениями. Например:

double x = 0, y = 1;

или же

double x = 0, y;

То, что вы ввели, является эквивалентом

double x = 0;
double 1;

Что, очевидно, не правильно.

7

Другие решения

Ну, это рассматривается как

double x = 0; double 1;

вот почему. Так же, как вы написали бы

double x = 0, y;

Это синтаксис для объявления, вы просто пытаетесь объявить 1 как переменная (что неверно). Не думайте, что это намного больше …

11

По вопросам рекламы [email protected]