文档章节

char、int、long 、longlong 的区别

元禛慎独
 元禛慎独
发布于 2017/05/10 14:17
字数 737
阅读 10
收藏 0

突然间就想到了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类型通常字长是相同的)。

这时候我又想到了,不同的机器位下,这三个类型到底有什么区别,short就不说了,从上面两段介绍来说,short应该都是16位了,那么int和long呢?百度一下(我不喜欢百度,但是google不稳定,只能百度了)。先看列表:

类型

16位系统/字节

32位系统/字节

64位系统/字节

char

1

1

1

char*

2

4

8

short

2

2

2

int

2

4

4

long

4

4

8

long long

8

8

8

从表中可以看出这么几个问题,int类型在64位系统下竟然是4个字节32位的。还有,这些玩意儿到底跟什么有关系?是谁在控制着?从网上扒了各种解释,大概有这么两点:

1、64位系统下,编译器为了向前兼容,将int类型自动编译为4个字节的了;

2、这些个玩意儿就是编译器来控制的,不同的编译器将int类型编译成不同长度的,所以,使用什么编译器才是重要的,比如:32位系统,tc下的int就是16位长度的,VC就是32位长度的。

3、long long是标准的8 bytes,不受编译器限制,所以,16位的依然也是8 bytes。(多谢博友0_0i_i 的指正)

通过上面的介绍,应该大致明白整型的定义了吧,所以我们在使用整型变量的时候还是得小心的,尤其需要其所占空间长度的时候,千万不要想当然的认为int在32位系统下就是4个字节。尽量使用sizeof取值。

本文转载自:

元禛慎独
粉丝 3
博文 209
码字总数 60366
作品 0
朝阳
程序员
私信 提问
c# 获取串口设备的输入(unsigned char *和 char*)

因为是C#,所以平台肯定是.NET了。 之前因为一个小小的业务需要接触了下密码键盘的操作。其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的过程中还是感觉查到的东西挺...

幕三少
2013/04/24
0
0
C++ Primer 读书笔记-ch02

引言 数据类型是程序的基础,决定了编译器以及运行时的各项操作解释。在编译时不同的变量应该分配多大的空间?在运行时对指针进行+1操作,指针应该跳几个字节?在类型明确的情况下,上述操作...

西昆仑
2016/04/04
21
0
CUDA学习(三十六)

内置的矢量类型: char, short, int, long, longlong, float, double: 这些是从基本整数和浮点类型派生的矢量类型。 它们是结构,第一,第二,第三和第四个组件分别可以通过字段x,y,z和w...

night李
2018/02/11
0
0
c#调用C++DLL参数对应

//C++中的DLL函数原型為 //extern "C" declspec(dllexport) bool 方法名一(const char 变量名1, unsigned char 变量名2) //extern "C" declspec(dllexport) bool 方法名二(const unsigned c......

moki_oschina
2016/08/09
91
0
『ACM C++』PTA浙大 | 基础题 - Have Fun with Numbers

连着这两道都是开学前数构老师的“爱心作业”,还没上课开学就给我们布置作业了,这道题有点小坑,也经常遇到类似的问题,特地拿出来记录一下。 ------------------------------------------...

HiCoding、嗨威
02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

yapi上传接口idea插件

YapiIdeaUploadPlugin 插件使用 目的 减少手动维护yapi接口文档的时间成本,通过idea插件快速提交接口文档到yapi; 保证接口文档的准确性,方便后台、前端、测试等查看接口文档; 反向规范代...

狂奔的熊二
8分钟前
5
0
最近学习到的Lambda表达式

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 中秋去了躺上海,在外滩上打了个卡: 紧接着学了一下Java的函数式编程,给大家整理了...

Java3y
19分钟前
11
0
一条insert语句批量插入多条记录

-- 一条insert只能插入一条数据 insert into person (id, personCode, personName , telNumber)values(1,'5112403' , '张三' , '1378902134'); 一次插入多条数据的方法: 方式一: insert i......

葬-花
31分钟前
2
0
IT兄弟连 HTML5教程 HTML5的基本语法 简单HTML实例制作

现在学习HTML5的方式 目前HTML还处于HTML4与HTML5之间的过渡使用阶段。移动端的Web界面开发已经全面使用HTML5的技术,而在PC端由于用户升级浏览器周期较长,面临着页面的兼容性问题,以及开发...

老码农的一亩三分地
45分钟前
4
0
[Android] 【每日更新书源】「阅读」APP -100+ 精品书源一键导入!每天自动更新最新书源!

我特地写了个爬虫爬取书源,每天自动更新书源(URL是固定的)!大家也可以定期导入一下! 放心!导入时会自动去除重复书源的! 前段时间我发过一个书源大礼包的帖子,不过现在已经无法编辑修...

xiaogg
49分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部