看板 C_and_CPP 關於我們 聯絡資訊
請教兩個cin觀念的問題 我有問題的code如下 int choice=0; while( (choice=getChoice()) != 0) { cout<<"hello"<<endl; } int getChoice() { int c=0; cin>>c; return c; } 當cin時給int都可以正常運作 但若故意在cin時給char, 為何會產生無限loop? (我以為會是char轉成int非 0, 印一次hello, 再回到while判斷) 另外一個問題是我改用 while(cin>>choice != 0) 當判斷 反而是給char不會進loop, 又是為什麼呢 (>>會傳回istream的cin, 是嗎? 這個cin非int 0不是該進loop嗎?) 可能有很多觀念錯誤的地方..煩請指教, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66 ※ 編輯: jehovah 來自: 210.69.128.66 (08/05 15:13)
loveme00835:當讀入格式錯誤的時候, 標示錯誤的旗標會升起, 這時候 08/05 15:20
loveme00835:除非你用像clear之類的函式把錯誤旗標重設, cin 不會 08/05 15:21
loveme00835:讀入任何東西, >> 恆右運算元不變, 所以getChoice 回 08/05 15:22
loveme00835:傳都是0 08/05 15:22
loveme00835:第二個問題, 回傳 cin 會隱含轉換成 bool 型態, 無錯 08/05 15:24
loveme00835:誤是回傳 true, 相反的就會結束迴圈, 這時候寫 != 08/05 15:25
loveme00835:false 是比較正確的 08/05 15:25
jehovah:謝謝這麼清楚的說明^^ 懂了 08/05 15:30