請問一下x和y的結果是怎么運算得來的?結果中第一個x結果怎么來的?
#include <stdio.h>
int main()
{
? ? int x = 10;
? ? int y= 10;
? ? printf("++x=%d;x++=%d\n",++x,x++);
? ? printf("--y=%d;y--=%d\n",--y,y--);?
? ? return 0; ? ?
}
結果:
++x=12;x++=10
--y=8;y--=10
#include <stdio.h>
int main()
{
? ? int x = 10;
? ? int y= 10;
? ? printf("++x=%d;x++=%d\n",++x,x++);
? ? printf("--y=%d;y--=%d\n",--y,y--);?
? ? return 0; ? ?
}
結果:
++x=12;x++=10
--y=8;y--=10
2015-01-16
舉報
2015-01-16
首先要知道printf的運算是從右往左的..其次知道x++和++x的區別。
我們假設y=x++;那么這個的運算順序其實就是{y=x;x=x+1;};
我們再假設y=++x;那么這個的運算順序是{x=x+1;y=x;}
這就是這兩個的區別。然后考慮printf中的問題,它是自右往左的,所以一開始,x++的值用的其實只是x,然后用完之后x=x+1;所以x這里打印的是10,但是之后x的值是11,然后再來進行++x操作,前加加是直接加后運算的,那么x=12,然后打印出來的值也就是12了。下面的y類似~
另外由于c語言中沒有定義運算規則,所以結果還跟編譯器版本有一定關系~