[問題] 在不同的編譯器執行結果不同?

看板C_and_CPP作者 (......)時間15年前 (2009/02/21 15:39), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
我在寫一個質因數分解的程式,在最前面我寫了一個do while迴圈來判斷輸入是否正確 以下是我的部分程式: #include<iostream> #include<string> #include<sstream> using namespace std; int main() { string input_string; //輸入為string型態 int input; //存放由input_string轉換過來的值 do { cout<<"請輸入一個小於10000的數字"<<endl; getline(cin, input_string); istringstream(input_string)>>input; } while (input>10000); return 0; } 這個程式在兩個編譯器編譯時都沒有錯誤訊息,可是執行的時候依照我輸入的文字 會有不同結果。 1. Code:blocks 使用GNU GCC compiler , debugger是 GDB 若我輸入a,則螢幕會顯示"請輸入一個小於10000的數字" 2. Visual Studio 2008 若我輸入a,則程式結束,顯示"請按任意鍵繼續"(使用 偵錯-->啟動但不偵錯) 請問為什麼會這樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.101.122

02/21 17:58, , 1F
如果是getline(cin, input_string,'\n');
02/21 17:58, 1F

02/21 18:35, , 2F
結果是一樣的
02/21 18:35, 2F

02/21 19:20, , 3F
強制轉型的實做不一樣吧 你可以把值印出來看看...
02/21 19:20, 3F

02/21 20:10, , 4F
謝謝 我了解了
02/21 20:10, 4F
文章代碼(AID): #19dw-Yui (C_and_CPP)