## Trending News

# c語言初學

#include <stdio.h>

#include <stdlib.h>

void main (void)

{

int x=1,y=1,z=1;

z=++x-y++;

printf("%d\n",z);

z=z + x++ + ++y;

printf("%d\n",z);

system("pause");

}

為啥執行結果z=6

這個到底是怎麼算的我都霧薩薩= =

y = y + 1; //y為3

z = z + x + y; //z為1+2+3=6

x = x +1; //x為3

這邊的運算我還是搞不懂耶!

++x , y++ 到底是怎麼怎麼拆的

### 1 Answer

- ☆ Minarsih 。。。★Lv 51 decade agoFavorite Answer
z=++x-y++;

等同於

x = x+1; //x為2

z = x-y; //z為1

y = y+1; //y為2

所以,第一次印出 1

***********

z=z + x++ + ++y;

等同於

y = y + 1; //y為3

z = z + x + y; //z為1+2+3=6

x = x +1; //x為3

所以,第一次印出 6

註:

對 variable = expression 的運算順序

1) ++x, --x in expression

2) expression (先乘除後加減)

3) =

4) x++, x-- in expression

2008-09-22 09:12:48 補充：

++x , y++ 到底是怎麼怎麼拆的 ???

++x要在

variable = expression 之前

所以, a = ++b + c;

等於

b = b+1; a = b+c;

*************

x++要在

variable = expression 之後

所以, a = b++ + c;

等於

a = b+c; b=b+1;

****************

++x, y++ 都在expression,

只要拆成一前後啊!