永发信息网

ACM中关于__int64与long long 的区别

答案:5  悬赏:40  手机版
解决时间 2021-04-26 19:52
ACM中关于__int64与long long 的区别
最佳答案
__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 在不同的系统中长度不一样。C语言有这样的约定:sort 两个字节,long 四个字节,int 则处在两者之间并随编译器不同而不同。没有直接对long long 定义,因而它的长度也是变化的(四个或八个字节)。而__int64 则是64位的。然而,__int64 也是没有直接定义的。在有些编译器中__int64 不可用(例如 eclipse),而有些编译器中 long long 不可用(例如 visual C++6.0)。所以我们在编译程序时应当先熟悉(可以使用sizeof() 来测试)编译器。
我感觉是 scanf("%lld",&标识符 ); 有问题,你可以用 "%ld" 试一下。
既然你用的是C++,那么你可以用 cin 来接收输入的数据。
还有,并不是所有变量都需要64位来存储。
long long 是32位的,__int64是64位的
他们的数的范围不一样啊
__int64 范围更大
因为我们用的系统都是32位,所以在编译器中,int是32位,long long和__int64都是64位的,因此用哪个都行,相信我!你的问题出在,不论是long long还是__int64,如果你用printf输出,都必须用printf("%I64d\n",a)表示,千万不能用lld,用lld肯定错,你用cout就不会有这个困扰,这也就是为什么用cout能ac的原因。同理,建议你scanf最好你也别用lld,用%I64d。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
刚买的V8为什么放荷包会关机?放桌子上就不关
酸杷树我想知道这个在什么地方
福州农村信用社的转账到厦门农业银行的,手续
深厚什么的成语,成语大全 无()深()
好友买卖里怎么样才能长期拥有奴隶
熊猫看书能在线下载书籍吗
哈飞江民意大修玩每近是怎么回事啊
2010年8月份龙口市什么时候下中雨?????~
电视剧或电影中有什么好的诗词?
东莞哪有最好的会计电算化培训机构?
对学生宿舍设计方案中,经济性.安全性.舒适性
巴比伦外墙漆怎么样
石头炸串辣炒海鲜地址有知道的么?有点事想过
元朝时,时谁把中国疆域扩张到了欧洲!
如何分辩别人说的话是真是假?
推荐资讯
为什么一个离开两个人寂寞啊!
中国电信沭阳分公司怎么去啊,有知道地址的么
兴海百货书店我想知道这个在什么地方
用天翼手机卡(非无线网卡内置sim卡)如何点
社会纹身语录,一个女孩不喜欢有纹身表白的话
炼江路在哪个市
我想再问一下 出现了这个问题 卸载完了 安装
这久天天冷战,真的过不下去了,结婚6年了,
775885是什么意思
如何办理外经证?
2016年闽一中中考录取分数线是多少
贮蔵品的翻译是:什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?