关于long long 的问题

steven30832 2011-09-24 10:42:16
在HIT 上做了一个题,题目如下:


For each pair of integers A B and C ( -2^31 <= A, B, C<= 2^31-1 ), Output the result of A+B+C on a single line.
Sample Input
1 2 3
3 4 3
Sample Output
6
10
提示 请注意32位机上int的表示范围。

提交代码的时候,使用了long long,代码如下
#include <iostream>
using namespace std;

int main()
{
long long a,b,c;
while(cin>>a>>b>>c)
{
cout<<a+b+c<<endl;
}
return(0);
}


这样就一直都是WA,后来改成如下:


#include <iostream>
using namespace std;

int main()
{
int a,b,c;
while(cin>>a>>b>>c)
{
long long d = 0;
d += a;
d += b;
d += c;
cout<<d<<endl;
}
return(0);
}


就成功AC了!

第一次用long long,不太了解。希望有高手来解答一下。


...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
steven30832 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 akirya 的回复:]

引用 6 楼 steven30832 的回复:

大家没有看懂我的问题,我的意思是为什么第一种方法就会WA,但是第二种方法就能AC。难道long long 类型在直接cin的时候会有一些特殊的处理导致和int不同么?

假如
a = 2^31-1
b = 1
c=0
那么a b c为int的时候 结果就会变成负数。 于是就WA 了
[/Quote]

但是我第一种方法就是直接cin 一个long long的呀!!
第二种才是cin三个int,然后用一个long long表示三个int的和!!
但是偏偏是第二种AC了,第一种提示WA。
AndyZhang 2011-09-27
  • 打赏
  • 举报
回复
你用printf试一下。。。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steven30832 的回复:]

大家没有看懂我的问题,我的意思是为什么第一种方法就会WA,但是第二种方法就能AC。难道long long 类型在直接cin的时候会有一些特殊的处理导致和int不同么?
[/Quote]
假如
a = 2^31-1
b = 1
c=0
那么a b c为int的时候 结果就会变成负数。 于是就WA 了
steven30832 2011-09-27
  • 打赏
  • 举报
回复
大家没有看懂我的问题,我的意思是为什么第一种方法就会WA,但是第二种方法就能AC。难道long long 类型在直接cin的时候会有一些特殊的处理导致和int不同么?
pathuang68 2011-09-24
  • 打赏
  • 举报
回复
楼主可以用sizeof(long long)看看,这个数据类型的大小。
pathuang68 2011-09-24
  • 打赏
  • 举报
回复
long long是8bytes,即64位,它能容纳最大的整数范围是:-2^63 ~ 2^63 - 1

32bit机器上,int的范围是-2^31 ~ 2^31 - 1,那么A、B、C三个数加起来可能值域是:
3 * (-2^31) ~ 3 * (2^31 - 1),
很明显这个值域,包含在-2^63 ~ 2^63 - 1中,因此用long long可以很好地解决这个问题。
ljhhh0123 2011-09-24
  • 打赏
  • 举报
回复
你提供的是32位,我用64位接收你。第一种解法没什么不对的呀。
某某9 2011-09-24
  • 打赏
  • 举报
回复
在32位,long long是iso c99引入的,它至少需要8个字节表示,即2^63
有符号的long和int,都是2的31方。
turing-complete 2011-09-24
  • 打赏
  • 举报
回复
8个字节

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧