ACM中关于__int64与long long 的区别
答案:5 悬赏:40 手机版
解决时间 2021-04-26 19:52
- 提问者网友:最爱你的唇
- 2021-04-26 14:06
ACM中关于__int64与long long 的区别
最佳答案
- 五星知识达人网友:一秋
- 2021-04-26 14:23
__int64与long long 都是在32位平台开始使用的64位整数的数据类型,在存储方式和使用方式上没有区别。
两者的区别在于,它们命名的发起人不同,支持的平台不同。long long这个数据类型,是UNIX平台发起并支持的,而__int64是微软从win95(VC6)开始发起并支持的,在老的windows开发平台下(如VC6),不识别long long,而老的UNIX,也不识别_int64。当然,现在比较新的平台,两种数据格式和相关的定义、函数都可以兼容了。
同样,作为64位整数的printf输出格式定义,也是一样,微软使用的是%i64d,而UNIX使用的是%lld以及%llu(无符号64位)等形式。
实际上,无论哪一种,在实际效果上没有不同,只是因为定义者和使用环境造成的支持或不支持的问题。
而ACM中,编译识别系统偏向更多的支持微软系统的定义,因此应该使用__int64和%i64d
两者的区别在于,它们命名的发起人不同,支持的平台不同。long long这个数据类型,是UNIX平台发起并支持的,而__int64是微软从win95(VC6)开始发起并支持的,在老的windows开发平台下(如VC6),不识别long long,而老的UNIX,也不识别_int64。当然,现在比较新的平台,两种数据格式和相关的定义、函数都可以兼容了。
同样,作为64位整数的printf输出格式定义,也是一样,微软使用的是%i64d,而UNIX使用的是%lld以及%llu(无符号64位)等形式。
实际上,无论哪一种,在实际效果上没有不同,只是因为定义者和使用环境造成的支持或不支持的问题。
而ACM中,编译识别系统偏向更多的支持微软系统的定义,因此应该使用__int64和%i64d
全部回答
- 1楼网友:鱼忧
- 2021-04-26 17:08
long long 在不同的系统中长度不一样。C语言有这样的约定:sort 两个字节,long 四个字节,int 则处在两者之间并随编译器不同而不同。没有直接对long long 定义,因而它的长度也是变化的(四个或八个字节)。而__int64 则是64位的。然而,__int64 也是没有直接定义的。在有些编译器中__int64 不可用(例如 eclipse),而有些编译器中 long long 不可用(例如 visual C++6.0)。所以我们在编译程序时应当先熟悉(可以使用sizeof() 来测试)编译器。
- 2楼网友:低血压的长颈鹿
- 2021-04-26 16:24
我感觉是 scanf("%lld",&标识符 ); 有问题,你可以用 "%ld" 试一下。
既然你用的是C++,那么你可以用 cin 来接收输入的数据。
还有,并不是所有变量都需要64位来存储。
既然你用的是C++,那么你可以用 cin 来接收输入的数据。
还有,并不是所有变量都需要64位来存储。
- 3楼网友:第四晚心情
- 2021-04-26 14:56
long long 是32位的,__int64是64位的
他们的数的范围不一样啊
__int64 范围更大
他们的数的范围不一样啊
__int64 范围更大
- 4楼网友:醉吻情书
- 2021-04-26 14:39
因为我们用的系统都是32位,所以在编译器中,int是32位,long long和__int64都是64位的,因此用哪个都行,相信我!你的问题出在,不论是long long还是__int64,如果你用printf输出,都必须用printf("%I64d\n",a)表示,千万不能用lld,用lld肯定错,你用cout就不会有这个困扰,这也就是为什么用cout能ac的原因。同理,建议你scanf最好你也别用lld,用%I64d。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯