关于程序的效率问题??

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:44:03
能不能这样说,x=x+1;x+=1;x++;这三个语句的意思都是:
把x的值从内存中拿出来做加1操作,然后把计算的结果再放入内存
如果能这样说的话,不是看不出内存读写次数的变化了啊?
如果不是的话,这句话到底把哪些细节给隐藏了??
提问

意思基本不错,三条语句都表示对变量x做自加1。编译后的情形有些不同,前两个只是语言写法上的不同,编译结果是一样的,而最后的语句C/C++编译器作了优化,减少了编译后的机器码数量,比如减少了取操作数1的机器代码。至于读写内存,则无论哪条语句都涉及了读和写变量x内存各一次的操作。

个人认为,c对语言做了优化,可能翻译成机器语言后用的内存不一样,你可看一下汇编,机器中有一部分内存较快

我想编译器对这种语句,都会编译成inc操作。

x=x+1;是经典的写法

x+=1;是C语言发明的写法

这两种运算应当是一样的,它们是完整的赋值语句.先算表达式的值,再赋.

x++; 看单句好像与上面一样.实际上它是表达式.++是增量运算符号.C语言增量有"前加加"和"后加加",x的值何时变化,要小心对待,特别是在循环语句中,容易出错.

赋值语句,一旦赋了就更新了.

看起来好象一样,编译以后不一样

也许编译器优化后又一样。建议是使用x++

个人认识x=x+1跟x+=1是一样的,都是

1,把x读出来
2,把读出来的数+1
3,把算出来的数字赋值给x

而x++;
是x直接自增
就是汇编里的inc