c++中int a=1,a=a++;为什么a最后不是等于2而是等于1?
首先你要弄清后缀自加的作用,它是做了这么一件事:让变量自增,同时返回自增之前的值。 所以这个值有可能是1 .也有可能是2 .具体结果取决于编译器规则。
因为我在 vs2017 下运行结果是 2,在dev c++ 下运行是1.
C语言中,如果++在后是先将a+中a的值给变量,然后a在增加1,如果++在前,则a的值先加1然后再赋值给变量
它和++a不一样,这个是右值是取原来的值赋给左值,然后再加1
a++是先自己自加一后,再赋给左边的值
对呀,那它应该是将a赋值给a以后再自加才对,那a的值应该是2吧
a++是现将a的值给左边赋值,然后加1,++a是现在加一在赋值给左边
楼主遇到的问题是这样:a++和++a的区别。还有就是最后不管是a++还是++a,看输出的a是哪一个?
1.a++先赋值再加一,++a先加一在赋值
2.输出的a是等式左边的a,所以就是等号右边的a的值1先赋值给等号左边的a,然后这个a=1接着等号左边的a就输出了,输出之后才运行a++。
int a=1,a=a++;
等价于 int a= 1; a =a ; a++;
a =a++;先赋值,在+1;a= ++a;先+1,再赋值
a=a++;这句之后a的值依然是1,直到进行一次运算后a的值+1
先将a值加1,然后再赋给a
看,是2,
调试时看下汇编的代码,你就很清楚了
因为a先赋值后进行本身加1 ,所以为1