C和C++中的整形数据类型

本文详细介绍了计算机编程中的数据类型实现原理,探讨了不同位数的计算系统(如32位和64位)对数据处理的影响,并解释了C语言中如int、long等基本数据类型的特性及其在不同编译环境下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型是编程中碰到的一个最基本问题,下面我们来理解数据类型的实现。

首先各种数据类型是如何实现的,比如int,比如long。

首先介绍数据类型相关的一个概念,32位计算机或者64位计算机。计算系统本身是有其特点的,比如32位的系统,64位的系统等。他们之间的差别就是数据宽度的差别,对于32/64位的系统,寄存器大小是32/64位的,CPU访问内存时,一次可读取的数据也是32/64位的。但是这些并不构成数据类型的差别。 数据类型事实上是编程语言中的概念。比如汇编语言中的类型是单字节类型、双字节类型、4字节类型等;而C语言中定义int, long,short等;Java中会定义Object等高级类型。这里我们只介绍基本数据类型。虽然汇编语言比C语言更底层,但那并不意味着C语言中的类型可以一一映射到汇编语言的数据类型(虽然没有很相似)。C语言定义了一些标准数据类型:int, short, long等,具体的可以参考http://en.wikipedia.org/wiki/C_data_types。 但是这些类型并不是固定size的,只是有一些约定:long long  is not smaller than long, which is not smaller than int, which is not smaller than short。这样就造成一些混乱,比如说long的size是多少呢?这个不一定,不同的编译器,不同的机器上得到的结果是不一样的。比如,在MacOSX+XCode上,如果按照64位编译,它是64bit的;如果按照32位编译,它是32bit的;而在Windows上,使用VS编译,不论如何编译它都是32bit的。(这是由64bit 的data model决定的:http://en.wikipedia.org/wiki/64-bit#64-bit_data_models )。在C99中引入了一些变化,包括一个新的头文件stdint.h。其中定义了若干新的数据类型,这些类型就不再是不固定size的。在类型的名称中就包含了它的size,比如:uint64_t,int_least8_t等。

转载于:https://www.cnblogs.com/whyandinside/archive/2012/01/29/2331167.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值