[問題] 三元運算子

看板C_and_CPP (C/C++)作者 (被找麻煩了...)時間15年前 (2010/10/18 13:56), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚)三元運算子使用後T&F的問題 希望得到的正確結果:輸入一個整數值M,若M<0則輸出正值 M<0?-M:M 程式跑出來的錯誤結果:都只有輸入的原值... 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev 有問題的code: (請善用置底文標色功能) cout << "請輸入一個數字:"; cin >> M; cout << M<0?-M:M; 補充說明:該如何輸出正值呢?謝謝大家^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.209.159

10/18 14:07, , 1F
好問題, 因為?:的優先權比左移<<還要低, 所以你這行
10/18 14:07, 1F

10/18 14:08, , 2F
等價於 (cout << M)<0?-M:M; 為了避免它跑出你不想要
10/18 14:08, 2F

10/18 14:09, , 3F
的結果, 右邊要自己搶先把它括起來 cout << (M<0?-M);
10/18 14:09, 3F

10/18 14:10, , 4F
三元運算子的整個敘述最好視為一個整體, 也要有加上括
10/18 14:10, 4F

10/18 14:11, , 5F
號的好習慣, 不過除非是初始reference必需要用到?:
10/18 14:11, 5F

10/18 14:11, , 6F
一般來說寫 if else 會比較清楚
10/18 14:11, 6F

10/18 14:14, , 7F
謝謝樓上^^ 現在主要是練習~可是我加上括號還是輸出原值>"<
10/18 14:14, 7F
文章代碼(AID): #1Ck-6hgB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Ck-6hgB (C_and_CPP)