[問題] long long

看板C_and_CPP (C/C++)作者 (かがみは俺の嫁。)時間16年前 (2009/11/02 23:39), 編輯推噓10(10016)
留言26則, 5人參與, 最新討論串1/1
#include <iostream> using namespace std; int main(){ long long a = 2147483647; cout<<(a<-2147483648); system("pause"); return 0; } 為什麼結果出來是 1 ? 這有辦法解決嗎? 會是開發環境的問題嗎? -- Hate Stupidclown Realplaying BBSmovie NoteFantasy WuLing50-310 C_and_CPP English Seniorhigh Graduate RO Hsinchu Taoyuan Math Koei Falcom Sangokumusou Pisces Junni-Kokki Fantasy MSNmessenger Google AkamatsuKen P_mTwTm @ telnet://bs2.to mTwTm @ telnet://ptt2.cc -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.235.115

11/02 23:43, , 1F
IDE 是 Dev 謝謝 :D
11/02 23:43, 1F

11/02 23:45, , 2F
不然你認為應該是甚麼?
11/02 23:45, 2F

11/02 23:48, , 3F
沒講清楚sorry 我希望他是0 @^@
11/02 23:48, 3F

11/02 23:48, , 4F
cout<<(a<-2147483647) (a<-2147483649) (a<-2147483650)
11/02 23:48, 4F

11/02 23:48, , 5F
都是0
11/02 23:48, 5F

11/02 23:49, , 6F
是鴨大耶 :D
11/02 23:49, 6F

11/02 23:57, , 7F
用 debugger trace 看看 說不定是溢位?
11/02 23:57, 7F

11/03 00:04, , 8F
-2147483648LL ?
11/03 00:04, 8F

11/03 00:10, , 9F
感謝ledia大 我以為不用轉Orz
11/03 00:10, 9F

11/03 00:12, , 10F
的確加LL就可以, compiler應該有給你warning:)
11/03 00:12, 10F

11/03 00:12, , 11F
只是乍看之下小弟也以為應該不用轉@_@"
11/03 00:12, 11F

11/03 00:26, , 12F
印象中整數的 const literal 預設是 int, 但找不到佐證 囧
11/03 00:26, 12F

11/03 00:26, , 13F
反正有加有保佑 XD
11/03 00:26, 13F

11/03 00:27, , 14F
感謝m(_ _)m
11/03 00:27, 14F

11/03 00:44, , 15F
是int沒錯, 但是這兩個都當int不是也該比得出結果嗎?_?
11/03 00:44, 15F

11/03 00:45, , 16F
更何況有一個被轉成long long了@_@"
11/03 00:45, 16F

11/03 00:46, , 17F
小弟DevC++不知道為什麼現在compile就被as.exe死卡住,
11/03 00:46, 17F

11/03 00:46, , 18F
明天想到有空再來測看看好了....Orz
11/03 00:46, 18F

11/03 00:54, , 19F
對噢 int int應該也沒問題啊@@"
11/03 00:54, 19F

11/03 01:29, , 20F
原本直覺是 -2147483648 超出 int range .. 但並不是如此
11/03 01:29, 20F

11/03 04:33, , 21F
integer literal不包含負號
11/03 04:33, 21F

11/03 04:45, , 22F
然後g++很神奇的把2147483648當成unsigned long
11/03 04:45, 22F

11/03 04:46, , 23F
所以-2147483648=-(unsigned long)2147483648=2147483648
11/03 04:46, 23F

11/03 09:12, , 24F
唉~~小弟果然很笨, 照樓上F大這樣一說, 昨天的warning
11/03 09:12, 24F

11/03 09:12, , 25F
好像是沒有負號....Orz
11/03 09:12, 25F

11/03 14:49, , 26F
唔 原來是這樣
11/03 14:49, 26F
文章代碼(AID): #1AxlqkEA (C_and_CPP)
文章代碼(AID): #1AxlqkEA (C_and_CPP)