看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 宣告一個int 並用cin指定值給它 如果這個值超過int可以存放的最大值 則顯示"too big" 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) vc++ and dev-c++ 有問題的code: (請善用置底文標色功能) #include <iostream> using namespace std; int main() { int a; cin >> a; //我輸入9876543210 cout << a <<endl; if (a > 3000000000) cout << "too big" << endl; //VC++會執行這行 else cout << a << endl; //Dev-C++會執行這行 system("pause"); return 0; } 補充說明: 有時候真的覺得 vc和devc是兩種不同的語言=.=> -- ◤ __ \__◢◤◢◤ ψhirabbitt ◤ ◢███◣ ◢███◣ 妳是我 █████ █████ 你是我 ██ ███ 最愛的寶貝 ██╱╲ ◥█████◣● 最寶貝的愛╱╱ ◥████ ˇ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.127.91
nowar100:其實我看不太懂這比較的意義 兩個數字都溢位了幹嗎比 XD 09/27 09:13
nowar100:何況要比溢位的話也不可能單憑一個大於就比出來了 @@" 09/27 09:14
hirabbitt:咦 直接打3000000000也會溢位嗎? 09/27 09:19
james732:覺得你對溢位好像有什麼誤解 XD 09/27 09:22
purpose:有號數,正數只到2^31-1 09/27 09:25
tinlans:你需要學習一下常數的語法。 09/27 09:41
tinlans:常數後面是可以加上一些尾綴英文字表示型態的。 09/27 09:42
hirabbitt:我在3000000000後面加l也沒有變化啊 09/27 09:57
tinlans:....樓上,你是 64-bit 平台嗎? 09/27 10:15
tinlans:你最好查一下你的平台和編譯環境 long 有多大。 09/27 10:16
tinlans:不過我真的很好奇,你的編譯器都沒有給你任何警告嗎? 09/27 10:19
chchwy:long也放不下的3000000000 要用long long 09/27 10:23
purpose:微軟的VC,在cin >> a 那邊,如果你值太大,他就會取消 09/27 10:27
purpose:所以你cin的動作等於沒有作,a還是原來的a值 09/27 10:28
tinlans:不合格式不管什麼平台都會讓 stream 掉進 fail 狀態吧。 09/27 10:47
hirabbitt:t大 沒有警告耶XD 還有我用(double)3000000000也是一樣 09/27 11:26
hirabbitt:我想搞不好是p大說的那樣XD 09/27 11:26
tinlans:comparison is always false due to limited range of 09/27 11:31
tinlans:data type 09/27 11:31
tinlans:我家的 g++ 會有這警告,針對 if (a > 3000000000) 這行。 09/27 11:31
tinlans:新版的 GCC 印象中要下 -Wextra 才會跳,-Wall 不會有。 09/27 11:32