1065. A+B and C (64bit) (20)

我写的时候其实有测试点没同过,参考别人的,呜呜。

这里重要的是long long数据类型范围,这里我在网上搜索了下其他的各种类型的范围:

int  、long 、long long数据类型范围

unsigned   int   0~4294967295   
int   2147483648~2147483647 
unsigned long 0~4294967295
long   2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615

__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615

#include<iostream>
#include<climits>
using namespace std;
bool cmp(const long long &a,const long long &b,const long long &c)
{
	if(a>0&&b>0)
	{
		if(a>LLONG_MAX-b)return true;
	}
	if(a<0&&b<0)
	{
		if(a<LLONG_MIN-b)return false;//好奇怪,为什么这里不能写成a+b>LLONG_MIN.仔细想想 a+b的范围可能无法表示,
	}                                   //所以要写成这样
	return a+b>c;
}
int main()
{
	long long a,b,c;
	int t;
	int count=1;
	cin>>t;
	while(t--)
	{
		cin>>a>>b>>c;
		cout<<"Case #"<<count<<": ";
		if(cmp(a,b,c))cout<<"true"<<endl;
		else cout<<"false"<<endl;
		count++;
	}
	system("pause");
	return 0;
}

这里用到了头文件climits ,其中定义了类型的数值的最大值和最小值

通过这里需要了解一下__

__int64 与long long 的区别

在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf(“%lld”,a),printf(“%I64d”,a),和cout << a三种方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值