复习的时候遇到了一个有个关于运算符号以及优先级的问题
int i=0;
i=i++;
给我看傻了,从c语言书上的解释i++意思就是先返回i的值,然后i再自增
所以最后i怎么都得等于1吧,但实际上结果是i=0。
实际上,不管是i++,还是++i都是i先自增
只是++i先自增,返回自增后的值
i++先自增,返回自增前的值
但是用i++代码来描述就是
int temp=i;
i=i+1;
return temp;
所以上述i=0;i=i++;
解释:i=i++;(i自增变成1,然后返回0,此时0赋值给i,i又从1变成了0,做了无用功)
int a = 0;
int b = 0;
a = a++;
b = a++;
cout<<a<<" "<<b<<endl;
上述结果是a=1,b=0;
第一步:a=a++;(a自增变成1,返回0,此时0赋值给a,a又从1变成0,无用功)
第二步:b=a++;(a自增变成1,返回0,此时0赋值给b,b=0,而a还是1!)