C语言中,v+=1与v=v+1到底有啥区别

若你说最终生成的CPU指令或汇编语言,那可能无区别;但若说『C语言』,逻辑上这属于完全不同的操作符,“不同的操作符”就是鸿沟天堑一样的区别。以上只是回答你的“标题”,但你的“正文”说的是不相干的事,答案参照“波斯基”的回答。
■网友
语义不同。v=v+1,v会被求值两次。v+=1只求值一次。不过对于v是整型之类的没实质性差异。复杂一点的表达式就会有,比如v里面包含了函数调用之类的。
■网友
0)在旧版本编译器上,生成的机器指令不同,在新版本上,几乎没有差别。1)几乎没办法办到最优化,除非直接使用汇编语言,而且这种要求本来就是病态的。别弄一些“看起来是优化”的优化,因为这些优化目前比较新版本的编译器会帮你做,而且做的更好。
■网友
c += 1翻译成x86汇编{ mov ax,c; inc ax; mov c,ax;}c = c+1翻译成x86汇编{ mov ax,c; add ax,1; mov c,ax;}代码效率差不多,而且目前的编译器会优化,这2种写法的汇编代码都一样,都是第一种的代码。
■网友
……为什么不写++c


    推荐阅读