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

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

Update:

y = y + 1; //y為3

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

x = x +1; //x為3

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

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

1 Answer

Rating
  • Favorite 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,

    只要拆成一前後啊!

Still have questions? Get your answers by asking now.