[問題] dev c++與vc++判斷溢位不一樣

看板C_and_CPP (C/C++)作者 (兔子)時間15年前 (2010/09/27 09:08), 編輯推噓4(4017)
留言21則, 6人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 宣告一個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

09/27 09:13, , 1F
其實我看不太懂這比較的意義 兩個數字都溢位了幹嗎比 XD
09/27 09:13, 1F

09/27 09:14, , 2F
何況要比溢位的話也不可能單憑一個大於就比出來了 @@"
09/27 09:14, 2F

09/27 09:19, , 3F
咦 直接打3000000000也會溢位嗎?
09/27 09:19, 3F

09/27 09:22, , 4F
覺得你對溢位好像有什麼誤解 XD
09/27 09:22, 4F

09/27 09:25, , 5F
有號數,正數只到2^31-1
09/27 09:25, 5F

09/27 09:41, , 6F
你需要學習一下常數的語法。
09/27 09:41, 6F

09/27 09:42, , 7F
常數後面是可以加上一些尾綴英文字表示型態的。
09/27 09:42, 7F

09/27 09:57, , 8F
我在3000000000後面加l也沒有變化啊
09/27 09:57, 8F

09/27 10:15, , 9F
....樓上,你是 64-bit 平台嗎?
09/27 10:15, 9F

09/27 10:16, , 10F
你最好查一下你的平台和編譯環境 long 有多大。
09/27 10:16, 10F

09/27 10:19, , 11F
不過我真的很好奇,你的編譯器都沒有給你任何警告嗎?
09/27 10:19, 11F

09/27 10:23, , 12F
long也放不下的3000000000 要用long long
09/27 10:23, 12F

09/27 10:27, , 13F
微軟的VC,在cin >> a 那邊,如果你值太大,他就會取消
09/27 10:27, 13F

09/27 10:28, , 14F
所以你cin的動作等於沒有作,a還是原來的a值
09/27 10:28, 14F

09/27 10:47, , 15F
不合格式不管什麼平台都會讓 stream 掉進 fail 狀態吧。
09/27 10:47, 15F

09/27 11:26, , 16F
t大 沒有警告耶XD 還有我用(double)3000000000也是一樣
09/27 11:26, 16F

09/27 11:26, , 17F
我想搞不好是p大說的那樣XD
09/27 11:26, 17F

09/27 11:31, , 18F
comparison is always false due to limited range of
09/27 11:31, 18F

09/27 11:31, , 19F
data type
09/27 11:31, 19F

09/27 11:31, , 20F
我家的 g++ 會有這警告,針對 if (a > 3000000000) 這行。
09/27 11:31, 20F

09/27 11:32, , 21F
新版的 GCC 印象中要下 -Wextra 才會跳,-Wall 不會有。
09/27 11:32, 21F
文章代碼(AID): #1Cd-wIPh (C_and_CPP)
文章代碼(AID): #1Cd-wIPh (C_and_CPP)