首页 > 编程知识 正文

ctrl e的用法,while的用法

时间:2023-05-05 05:57:53 阅读:158335 作者:904

__INT64的使用方法

(一) )。

在c中,int与长范围一样,只能表示(-2^31(2^31 )整数,即(-20亿) 20亿)

unsignedint和unsignedlong的范围为(0(2) 32 ),为40多亿。

表示更大的整数时,这两种数据类型很难使用。 在ACM中经常这样处理

的数据类型。 以前我的笨方法是做整形数组,每个a[i]存一个比特,这样就得做加减乘除运算

自己定义。 刚看到网络上的代码,使用__int64,8、8、8字节存储整数,参考了几个句子

章,介绍其范围和使用方法:

*****__int64,范围(-2^63(2^63 )即(-922亿) 922亿) ) )。

********unsigned__int64,范围(0至0~2^64 ),1844亿。

__int64支持四则混合运算和位运算,与int型运算自动转换为__int64型

vc6.0中的输入和输出:

__int64:

scanf('%I64d )、amp; a );

printf('%I64d ',a );

unsigned__int64

scanf('%I64u )、amp; a );

printf('%I64u ',a );

devC中的输入输出:

龙龙a;

a=1000000000000000 ll

请务必输入ll

cina;

出局

scanf('%I64d )、amp; a );

printf('%I64d ',a );

无符号的用法相似。

(二) ) ) ) )。

做ACM的问题时,经常会遇到几个比较大的整数。 一般的内置整数型太小了。

其中long和int的范围为[-2 ^ 31,2 ^ 31 ]、-2147483648~2147483647。 unsigned的范围

[ 0,2 ^ 32 ],即0至0~4294967295。 也就是说,普通的32位整数只能处理40亿以下的数量。

那么,遇到大于40亿的数怎么办? 此时,将使用c的64位扩展。 不同的编译器

64位整数的扩展不同。 根据ACM的需求,仅介绍VC6.0和g编译器的扩展。

VCVC6.0的64位整数分别称为__int64和unsigned__int64,其范围分别为[-2 ^ 63,2 ^ 63 ]

和[ 0,2 ^ 64 ],即- 9223372036854775808~9223372036854775807

0至0~18446744073709551615 (约1800亿)。 64位整数的运算与32位整数几乎相同,都是分支的

具有四则运算和位运算等。 如果进行64位和32位混合运算,32位整数将隐式转换为64

位整数。 但是,VC的输入输出与__int64的兼容性不好。 如果编写了这样的代码:

1 __int64a;

2cina;

3couta;

那么,第二行接受“errorc 26793360 binary ' ' : nooperatordefinedwhichtakesaright-hand”

operando ftype ' _ int 64 ' (orthereisnoacceptableconversion )错误; 在第三行接收“error”

C 2593: ' operator ' is ambiguous "错误。 那个不能输入输出吗? 当然,你

可以用C的写法:

scanf('%I64d ',a );

printf('%I64d ',a ); 就可以正确输入输出了。 如果使用unsigned__int64,请将“I64d”更改为“I64u”

不用了。

OJ通常使用g编译器。 其64位扩展方式与VC不同,分别被称为长龙

无符号龙。 处理规模与输入输出以外的使用方法相同。 输入输出时,扩展比

VC很好。 哪个都可以使用

1龙龙a;

2cina;

3couta; 也可以使用

scanf('%lld ),a );

printf('%lld ',a );

如果要使用无符号数字,请将“%lld”更改为“%llu”。

如果使用的是Dev-C的g编译器,请使用“%I64d”而不是“%lld”。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。