10

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

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.3and编译的gcc 4.4.3,结果是正常的赋值运算符。问题是:这不应该是语法错误吗?

4

4 回答 4

12

否 - 这被解析为:

number = +other_variable;

即你有赋值和一元+运算符。您正在阅读它,=+但它是两个独立的运算符,=并且+.

于 2013-09-04T14:10:31.093 回答
4

不,这只是一个空操作。

number = +other_variable;
number = 0 + other_variable;

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

number =- other_variable;
number = -other_variable;
number = 0 - other_variable;
于 2013-09-04T14:10:14.800 回答
1

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

number = (+other_variable);

据我所知,当应用于基本数据类型时,一元 + 运算符除了返回原始值之外什么都不做。但是,它可以超载。

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

number = (-other_variable);

于 2013-09-04T14:11:59.730 回答
0

不,这不是语法错误。

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

于 2013-09-04T14:11:31.617 回答