【发布时间】:2017-05-27 18:07:21
【问题描述】:
我想知道=+ 和+=(以及其他赋值运算符)之间是否有区别。我试过了,两者都做了同样的事情。那么有区别还是有约定?是否因为我的编译器不检查标准而两者都工作?
编辑:我犯了一个错误。我在测试期间使用了错误的输入,这让我认为他们都在做同样的事情。原来它们是两种不同的东西。
+= 添加右值到左值
x += y;
x = x + y;
=+ 将右值分配给左值
x =+ y;
x = +y;
x = y;
【问题讨论】:
-
C 中没有
=+运算符。 -
@EugeneSh。是的,但它有效。所以我不应该使用它吗?它只是偶然在我的电脑上起作用?
-
我是两个不同的操作员。赋值和一元
+。 -
@EugeneSh.:严格来说,C 中不再有
=+运算符。它在 70 年代中期不再是 C 的一部分。请注意,=+、=-、=&都可以出现在现代 C 语言中——甚至=*如果后面的术语是一个指针。其他大部分都做不到。但是,含义是两个独立的运算符;他们接触的事实无关紧要。 -
如果您有:
int main(void) { int i = 2, j = 3; i =+ j; printf("%d\n", i); return 0; },您打印的是 3 还是 5?标准 C 说它应该是 3。即使我从未使用过产生不同结果的编译器——从最初的=+到+=的变化发生在我开始用 C 编码之前的几年。
标签: c assignment-operator compound-assignment