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
推荐阅读
- 联运■连云港港全国首推集装箱铁水联运“一单到底”
- 汽车知识|第八代高尔夫到底值不值得买?1.4T自动Pro版全款多少钱?
- 人潮汹涌|丁真爆火第20天,到底谁才是真正的“幕后推手”?华春莹为他连发三推
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 什么|到底是什么原因?宝宝易咳嗽
- 京广和公司到底是干啥的
- 董洁|40岁的董洁到底怎么啦?少女造型被吐槽,女性的温柔感也不见了
- 中兴努比亚 Z5 的边框到底有多窄
- 汽车知识|西装暴徒的代表,40w就能拥有百万级别的声浪,到底是什么车
- 高圆圆|高圆圆高中时期到底有多美?班主任:至少有10个男生同时追她!
