Ответ 1
Нет - это анализируется как:
number = +other_variable;
то есть. у вас есть назначение и оператор унарного+. Вы читаете его как =+
, но это два отдельных оператора, =
и +
.
Недавно я пытался использовать следующий код:
int number = 4;
number += other_variable;//2
...
printf("Number:%d\n",number);//-->6
но у меня была ошибка ввода, и вместо этого у меня есть этот код:
int number = 4;
number =+ other_variable;//2
...
printf("Number:%d\n",number);//-->2
По-видимому, это скомпилировано с gcc 4.7.3
и gcc 4.4.3
, и результат был как обычный оператор присваивания. вопрос: не должна ли это синтаксическая ошибка?
Нет - это анализируется как:
number = +other_variable;
то есть. у вас есть назначение и оператор унарного+. Вы читаете его как =+
, но это два отдельных оператора, =
и +
.
Нет, это просто нулевой оператор.
number = +other_variable;
number = 0 + other_variable;
В дополнение к этим операциям, которые отрицают:
number =- other_variable;
number = -other_variable;
number = 0 - other_variable;
Нет, это два отдельных оператора.
number = (+other_variable);
Унарный + оператор, применяемый к базовому типу данных, насколько мне известно, не делает ничего, кроме возврата исходного значения. Однако он может быть перегружен.
Это аналог унарного оператора, который инвертирует знак.
number = (-other_variable);
Нет, это не синтаксическая ошибка.
То же самое похожее на a=-b;
- вы можете сделать a=+b;
тоже. Он не имеет никакого эффекта для этого (для встроенных типов, объекты, которые вы определили operator+()
, поскольку, конечно, могли бы сделать что-то напуганное здесь), но это вполне допустимый C-код.