C++的運算 有附程式碼 請詳細運算一下

請問一下喔

程式如下

為什麼 印出來是 679 這三個數字呢

可不可以 一個個詳細的說明

我有點不太懂:(

程式如下

#include <iostream>

using namespace std;

int main ()

{

int a=5;

switch(a){

default:

case 1:cout<<++a;

case 2:cout<<a++ +1 ;

case 3:cout<<a+2;break;

case 4:cout<<a+3;break;

}

system("pause");

return 0;

}

已更新項目:

case 1:cout<<++a; ←這個是印六

case 2:cout<

2 個已更新項目:

CASE 2 有點看不懂

CASE 3 是不是 做完BREAK 就不做了

3 個已更新項目:

感謝Julie

那我再問一個問題喔

請問一下

cout << a++ 是先印出A的數值在+1

cout << ++a 是先+1在印a

cott << a+1 直接印出(a+1) 這個數

應該是這樣吧.......

那如果舉個例子

cout << ++a +2 是先+2 再加1嗎 ?

2 個解答

評分
  • 7 年前
    最佳解答

    > cout << ++a +2 是先+2 再加1嗎 ?

    Yes and No

    假設a=6, 執行cout << ++a +2之後會印出9這數字, 但並不代表a=9。

    因為+2的運算並不會改變a的數值, 只有++a會, 所以a=7

    印出的數值是+2 +1

    但a只有加1

    > case 2:cout<<a++ +1 ;

    概念同上, 有趣的是這個用了a++而不是++a,

    所以印出來是a+1的數值, 但這"+1"的運算不會改變a的值

    改變a的值是a++這段指令。

    假設a=6, 程式因為a+1而印出7, 而a暫時沒有改變

    當這行程序結束的時候, a++令a=7。

  • 7 年前

    遇到break才會跳出,否則會一直做下去。

    case2 會印出a++ +1 :a是後加加所以先印出a+1然後a值再加一,所以是印7

    但是a值會變成7

    case3的時候因為a變成7了所以印出來是9

    參考資料: myself
還有問題?馬上發問,尋求解答。