作者siriusu (かがみは俺の嫁。)
看板C_and_CPP
标题[问题] long long
时间Mon Nov 2 23:39:23 2009
#include <iostream>
using namespace std;
int main(){
long long a = 2147483647;
cout<<(a<-2147483648);
system("pause");
return 0;
}
为什麽结果出来是 1 ?
这有办法解决吗?
会是开发环境的问题吗?
--
◢Hate Stupidclown Realplaying BBSmovie Note◢Fantasy
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
1F:→ siriusu:IDE 是 Dev 谢谢 :D 11/02 23:43
2F:推 ducksteven:不然你认为应该是甚麽? 11/02 23:45
3F:→ siriusu:没讲清楚sorry 我希望他是0 @^@ 11/02 23:48
4F:→ siriusu:cout<<(a<-2147483647) (a<-2147483649) (a<-2147483650) 11/02 23:48
5F:→ siriusu:都是0 11/02 23:48
6F:→ siriusu:是鸭大耶 :D 11/02 23:49
7F:推 ducksteven:用 debugger trace 看看 说不定是溢位? 11/02 23:57
8F:推 ledia:-2147483648LL ? 11/03 00:04
9F:→ siriusu:感谢ledia大 我以为不用转Orz 11/03 00:10
10F:推 VictorTom:的确加LL就可以, compiler应该有给你warning:) 11/03 00:12
11F:→ VictorTom:只是乍看之下小弟也以为应该不用转@_@" 11/03 00:12
12F:推 ledia:印象中整数的 const literal 预设是 int, 但找不到佐证 囧 11/03 00:26
13F:→ ledia:反正有加有保佑 XD 11/03 00:26
14F:→ siriusu:感谢m(_ _)m 11/03 00:27
15F:推 VictorTom:是int没错, 但是这两个都当int不是也该比得出结果吗?_? 11/03 00:44
16F:→ VictorTom:更何况有一个被转成long long了@_@" 11/03 00:45
17F:→ VictorTom:小弟DevC++不知道为什麽现在compile就被as.exe死卡住, 11/03 00:46
18F:→ VictorTom:明天想到有空再来测看看好了....Orz 11/03 00:46
19F:→ siriusu:对噢 int int应该也没问题啊@@" 11/03 00:54
20F:推 ledia:原本直觉是 -2147483648 超出 int range .. 但并不是如此 11/03 01:29
21F:推 Fenikso:integer literal不包含负号 11/03 04:33
22F:推 Fenikso:然後g++很神奇的把2147483648当成unsigned long 11/03 04:45
23F:→ Fenikso:所以-2147483648=-(unsigned long)2147483648=2147483648 11/03 04:46
24F:→ VictorTom:唉~~小弟果然很笨, 照楼上F大这样一说, 昨天的warning 11/03 09:12
25F:→ VictorTom:好像是没有负号....Orz 11/03 09:12
26F:推 ledia:唔 原来是这样 11/03 14:49