当前位置:  开发笔记 > 程序员 > 正文

+ = vs = + C赋值运算符之间有什么区别?

如何解决《+=vs=+C赋值运算符之间有什么区别?》经验,为你挑选了1个好方法。

我想知道=++=(和其他任务操作员)之间是否存在差异.我试过,两个都做了同样的事情.那么有区别还是有约定?两者都有效,因为我的编译器没有检查标准吗?

编辑:我犯了一个错误.我在测试期间使用了不良输入,这让我觉得他们都在做同样的事情.原来他们是两件不同的事情.该+=运营商增加了右值到左值=+.=+只需将右值分配给左值+=.



1> Keith Thomps..:

在现代C中,甚至是中等古老的C,+=是一个复合赋值运算符,并被=+解析为两个独立的标记.=+.标点符号可以相邻.

所以,如果你写:

x += y;

它相当于

x = x + y;

除了x只评估一次(如果这是一个更复杂的表达,这可能很重要).

如果你写:

x =+ y;

那么它被解析为

x = + y;

+是一个一元加运算符.

非常早期的C版本(大约在20世纪70年代中期,在1978年K&R1出版之前)使用不同的符号进行复合赋值.现代C使用的地方+=,早期的C使用=+.早期的C没有一元运算+符,但它确实有一元运算-符,并且使用=-引起的问题; 程序员会写x=-y它意味着它x = -y,但它被默默地解释为x =- y.该语言在1978年之前的某个时候被改变以避免这个问题.直到1999年,我使用了一个编译器(VMS上的VAXC)来警告模糊使用=-,但会使用旧的含义.这不应该是一个问题,除非你是一个玩一些非常旧的软件和/或硬件的业余爱好者.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有