[問題] if 判斷字元相等, 非預期執行結果

看板C_and_CPP (C/C++)作者 (sherry)時間13年前 (2013/03/23 21:51), 編輯推噓6(608)
留言14則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 不知道為什麼輸入都是0和1卻出現error message 餵入的資料(Input): 1111100000 預期的正確結果(Expected Output): 結束程式 錯誤結果(Wrong Output): ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); ErrorMessage(); 程式碼(Code):(請善用置底文網頁, 記得排版) #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { char g[10]; for(int i=0;i<10;i++){cin>>g[i];} for(int i=0;i<10;i++){ if(g[i]!='0'||g[i]!='1'){ cout<<"ErrorMessage();"<<endl; } } system("PAUSE"); return EXIT_SUCCESS; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.123.175

03/23 21:53, , 1F
仔細想想你的 if 在判斷什麼東西
03/23 21:53, 1F

03/23 22:01, , 2F
還是不懂@@
03/23 22:01, 2F

03/23 22:10, , 3F
不能被中文騙了
03/23 22:10, 3F

03/23 22:10, , 4F
翻成中文就是 g[i]不為 '0' 或 g[i]不為 '1'
03/23 22:10, 4F

03/23 22:12, , 5F
可能和 g[i] 不為 '0' 或 '1' 混淆了
03/23 22:12, 5F

03/23 22:30, , 6F
你的if判斷式是要判斷什麼條件?
03/23 22:30, 6F

03/23 22:45, , 7F
a!=0(你有錢)||(或者)a!=1(你沒有錢) cout << 給我錢
03/23 22:45, 7F

03/23 22:56, , 8F
是因為就算是'0'因為不能同時是'1'所以error對吧,謝
03/23 22:56, 8F

03/23 22:59, , 9F
short circuit evaluation概念 if中判斷順序由左至右
03/23 22:59, 9F

03/23 22:59, , 10F
因為是||判斷 所以只要由左邊開始一遇到TRUE就執行
03/23 22:59, 10F

03/23 23:00, , 11F
前五個都是1 所以g[i] != '0' TRUE 馬上進入if執行
03/23 23:00, 11F

03/23 23:01, , 12F
你被中文文法的邏輯判斷和C++邏輯判斷搞混了
03/23 23:01, 12F

03/23 23:01, , 13F
他不管第2個判斷g[i] != '1' 而後面5個0 則是先F再T
03/23 23:01, 13F

03/24 14:48, , 14F
g[i] 不為(0 或 1) = g[i]不為0 且 g[i]不為1 這是邏輯XD
03/24 14:48, 14F
文章代碼(AID): #1HJRDVJO (C_and_CPP)
文章代碼(AID): #1HJRDVJO (C_and_CPP)