作者daoism (......)
看板C_and_CPP
標題[問題] 在不同的編譯器執行結果不同?
時間Sat Feb 21 15:39:13 2009
我在寫一個質因數分解的程式,在最前面我寫了一個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
1F:→ bleed1979:如果是getline(cin, input_string,'\n'); 02/21 17:58
2F:→ daoism:結果是一樣的 02/21 18:35
3F:推 gotoo:強制轉型的實做不一樣吧 你可以把值印出來看看... 02/21 19:20
4F:→ daoism:謝謝 我了解了 02/21 20:10