long long,long,int
突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》:
short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数。int通常代表特定机器中证书的自然长度。short类型通常为16位,long类型通常为32位,int类型可以为16位或32位。各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。
下面一段话选自《C++ Primer》:
short、int和long类型都表示整型值,存储空间的大小不同。一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的)。
在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。
那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了。不同的编译器对64位整数的扩展有所不同。基于ACM的需要,下面仅介绍VC6.0与g++编译器的扩展。
VC的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~9223372036854775807与0~18446744073709551615(约1800亿亿)。对64位整数的运算与32位整数基本相同,都支持四则运算与位运算等。当进行64位与32位的混合运算时,32位整数会被隐式转换成64位整数。但是,VC的输入输出与__int64的兼容就不是很好了,如果你写下这样一段代码:
1 __int64 a;
2 cin >> a;
3 cout << a;
那么,在第2行会收到“error C2679: binary ‘>>’ : no operator defined which takes a right-hand operand of type ‘__int64’ (or there is no acceptable conversion)”的错误;在第3行会收到“error C2593: ‘operator <<’ is ambiguous”的错误。那是不是就不能进行输入输出呢?当然不是,你可以使用C的写法:
scanf(“%I64d”,&a);
printf(“%I64d”,a);
就可以正确输入输出了。当使用unsigned __int64时,把”I64d”改为”I64u”就可以了。
OJ通常使用g++编译器。其64位扩展方式与VC有所不同,它们分别叫做long long 与 unsigned long long。处理规模与除输入输出外的使用方法同上。对于输入输出,它的扩展比VC好。既可以使用
1 long long a;
2 cin>>a;
3 cout<
long long,long,int相关推荐
- Thinking In C++中文版
下载 第1章 对象的演化 计算机革命起源于一台机器,程序设计语言也源于一台机器. 然而计算机并不仅仅是一台机器,它是心智放大器和另一种有表述能力的媒体.这一点 使它不很像机器,而更像我们大脑的一部分 ...
- c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...
1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...
- C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明
带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...
- java 无法取消引用_Java的新手,并出现错误“无法取消引用int” - java
我是java的新手,并且已经从事了一段时间,但是仍然收到错误消息:无法取消引用int.我看到了几个类似的问题,但仍然无法弄清自己的情况. 这是完整的代码: package inclass; class ...
- python 把int类型转bytes以及把bytes 转int 类型(使用方法to_bytes ,from_byte, struct)
把int类型转bytes 方法1 使用方法to_bytes to_bytes 方法里面有3个参数 , 第一个数是指定要转换的bytes占多少个字节 第二个是byteorder 是指定大端或者是小端 的 ...
- TypeError: sequence item 1: expected str instance, int found
报错具体内容如下: 这里 是使用re.sub() 函数的时候 ,里面的第二个参数必须是string 类型, 我这里使用int 类型所以就报错了 处理方法就是把 int 类型数据转成string 类型的 ...
- ValueError: invalid literal for int() with base 10: “ ”
出现这个错误 :ValueError: invalid literal for int() with base 10: '' " 或者: ValueError: invalid liter ...
- TypeError: ord() expected string of length 1, but int found
错误如下 ord 里面要求的是一个string 的字符, 这里使用了int ,所以修改了print(ord("1")) 转ASCII 的时候需要注意了,
- BigDecimal 转换为int 或者其他类型
我列举了转换的方法 BigDecimal HALF_UP = new BigDecimal("-12.44").setScale(1, RoundingMode.HALF_UP); ...
- public static final int REMIN_REQUEST_CODE = 0x911 自己的大致理解
public static final int REMIN_REQUEST_CODE = 0x911; 自己理解为 一个静态常量,也就一个标识,自己目前主要在2个地方常用到 OnActivityRes ...
最新文章
- JAVA中文注解驱动,解决api接口返回的json里面出现中文乱码的问题
- 最近面试Java后端开发的感受
- 中国AI服务器,刷新全球18项性能基准测试纪录
- 【ORACLE】oracl基本操作笔记
- 最新代理服务器列表 2008-09-2
- c# getresponsestream返回byte[]_C# 基础知识系列-13 常见类库(三)
- 深入解释yield和Generators(生成器)
- [转载] java(三)对象的序列化与static、final关键字
- android webview es6,Android v 5.0 webview HTML5,CSS3和ES6兼容性
- 【软件测试】测试计划书
- 关于Orchard CMS
- Spring : @EnableConfigurationProperties注解
- 编程实现strstr函数
- MS08-067漏洞渗透测试
- 轻触开关式三功能手电筒3-5W驱动芯片AH3301
- 最新 EDK2 实验
- webRtc-streamer简单使用-备份
- Python的环境安装
- 转载一个手机RPG游戏制作工具,仿造RPGXP写的
- 微积分学在计算机科学中的应用,浅谈微积分学在中学数学教学中的应用解答.doc...
热门文章
- 计算机毕业设计Java教务管理系统(源码+系统+mysql数据库+lw文档)
- 第一章 Java的基本程序结构
- zabbix二次开发,帮你快速上手
- 赛迪研究院发布《2019中国大数据产业发展白皮书》
- 手机python3.8.5软件_Python|Python v3.8.7 for Linux下载_网站源码_站长下载
- 上海浦东文华东方酒店携小猪佩奇玩趣世界打造一站式亲子旅居攻略
- 分享个人常用的15 款开发神器
- maven jsw配置
- 为自动驾驶「打前战」,哪些细分领域是下一个「吸金」赛道
- 离散型随机变量,二项分布,泊松分布,几何分布(概统2.知识)