int main(void)
{
int x,y,z;
x=y=2;
z=3;
y=x++ -1;
printf("%d\t %d\t",x,y);
y=++x-1;
printf("%d\t %d\t",x,y);
y=z-- +1;
printf("%d\t %d\t",z,y);
y=--z+1;
printf("%d\t %d\n",z,y);
return 0;
}
输出的结果是3 1 4 3 2 4 1 2
按照我对于自增自减运算符的理解 第一个y=x++ -1; 不应该是2先加1 然后减1应该是2吗 为什么是3
一系列的不理解 希望大手能给点解释 关于运算顺序和为啥出来这个运算结果的解释
y=x++ -1;
是y = x - 1;
x++;
y=++x-1;
是x++;
y = x - 1;
你理解反了,x++,先加完(使用过一次x,x的值才会+1)
++x,x先加一(不使用,直接先加1再说),先加,然后再使用。
“<语句>”中的x++相当于:
<语句>
x=x+1
而“<语句>”中的++x相当于:
x=x+1
<语句>
~~~~~~~
一个是后加,一个是先加。
自增自减运算符,你理解错了。你可以看看http://m.blog.csdn.net/article/details?id=7446587
这里面有详讲
第一个y=x++ -1; 不应该是2先加1 然后减1应该是2吗 为什么是3 x++中++在后会先使用X值进行计算 为Y=x-1 给y赋值完成后 y=1 运算结束后 再X++自增1 即 X=X+1 x=3
记忆小技巧:x++,x在前意味着本身;++x,+在前,意味着加1
X++,先赋值再加,++X,先加后赋值.
x++是指运算式结束后x再加1 ,则 y = 2-1 = 1; x = 2+1; 故输出3 1