不应该是这个“= +”语法错误?

时间:2013-09-04 14:08:05

标签: c++ c gcc

最近我试图使用以下代码:

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.3gcc 4.4.3编译的,结果是作为普通赋值运算符。 问题是:难道不应该是语法错误吗?

4 个答案:

答案 0 :(得分:12)

不 - 这被解析为:

number = +other_variable;

即。你有任务和一元+操作员。您正在以=+的形式阅读它,但它是两个独立的运算符,=+

答案 1 :(得分:4)

不,这只是一个空的操作。

number = +other_variable;
number = 0 + other_variable;

作为这些操作的补充,否定:

number =- other_variable;
number = -other_variable;
number = 0 - other_variable;

答案 2 :(得分:1)

不,他们是两个独立的运营商。

number = (+other_variable);

应用于基本数据类型的一元+运算符,据我所知,除了返回原始值之外不会执行任何操作。但它可能会超载。

它是一元运算符的对应物,它反转符号。

number = (-other_variable);

答案 3 :(得分:0)

不,这不是语法错误。

它与a=-b;类似 - 你也可以a=+b;。它没有效果(对于内置类型,你定义的对象operator+()当然可以做一些时髦的事情),但它是完全有效的C代码。