BB asked in 電腦與網際網路程式設計 · 1 decade ago

請會C的高手幫忙解題

(1) i=5;

printf("%i\n",--i);

(2)i=5;

printf("%i\n",i--);

(3)i=5;

printf("%i\n",i=i--);

(4)i=5;

printf("%i\n",i=--i);

(5)i=5;

printf("%i\n",i==--i);

(6)i=5;

printf("%i\n",i==i--);

(7)i=5;

printf("%i\n",i=(i--==i--));

(8)i=5;

printf("%i\n",i==(i=--i));

請給詳答

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    (1)問的是 --i 這個 expression 的值,答案都是 4

    (2)問的是 i-- 這個 expression 的值,答案都是 5

    (3)i=i-- 先算等號右邊 i-- 是 5 ,結果 i=5 這個 expression 的值是 5

    (4)i=--1先算等號右邊 --i 是 4,結果 i=4 這個 expression 的值是 4

    第(5)題取決於compiler想先算 == 左邊還是右邊

    先算 == 左邊的結果是 5==4 ,結果 5==4 這個 expression 的值是 0

    先算 == 右邊的結果是 4==4 ,結果 4==4 這個 expression 的值是 1

    第(6)題取決於compiler想先算 == 左邊還是右邊

    先算 == 左邊的結果是 5==5 ,這個 expression 的值是1

    先算 == 右邊的結果是 4==5 ,這個 expression 的值是0

    第(7)題不管先算 == 左邊還是右邊

    i--==i-- 這個 expression 的值是 0,結果 i=0 這個 expression 的值是0

    第(8)題取決於compiler想先算 == 左邊還是右邊

    先算 == 左邊的結果是 5==4 ,這個 expression 的值是0

    先算 == 右邊的結果是 4==4 ,這個 expression 的值是1

    2008-03-21 21:33:35 補充:

    實驗結果 java 都是先算 == 左邊的

    第(7)題在 VC++ 結果是 1

    VC++ 似乎同時評估了 == 左右

  • ㄚ旺
    Lv 5
    1 decade ago

    (1) i=5;

    printf("%i\n",--i);

    1)i=i-1

    2)印出i值

    A)4

    (2)i=5;

    printf("%i\n",i--);

    1)印出i值

    2)i=i-1

    A)5

    (3)i=5;

    printf("%i\n",i=i--);

    1)i=i

    2)印出i值

    3)i=i-1

    A)5

    (4)i=5;

    printf("%i\n",i=--i);

    1)i=i-1

    2)i=i

    3)印出i值

    A)4

    5.6.7.8題與編譯器定義有關,無單一正確答案

Still have questions? Get your answers by asking now.