C/C++ 语言的数据类型的字节数

本文详细介绍了C++中char、short、int、long、float、double和longlong等基本数据类型的字节长度,解释了这些长度如何受到编译器而非系统位数的影响,并提供了C++和C90/C99标准下各类型大小的最小范围。

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

char,short,int,long,float,double,longlong的字节

数据类型的长度跟编译器有关系,跟系统32还是64位无关,比如,32位的程序运行在64位上,仍是按照当初编译(32的编译器)出来的字节长度运行的。

char:占一个机器字节byte,一般是8位,但也出现过6位,7位,9位,12位和16位。
int:占一个机器字word,一般是32位。但也出现过8, 9, 12, 18, 24, 36, 39, 40, 48和60位。
long:占一个通用寄存器,所以32位机上是32位,64位机上是64位。指针和long一样大。
float:如果是按照IEEE的标准是32位。
double:如果是按照IEEE的标准是64位。

C++标准没有指定int类型的字节数,但是指定了最小范围。可以在从要求的范围内的位推断最小size。

对于char来说,它的大小始终是1个字节。

C++标准要求的最小范围如下:

  1. signed char: -127 to 127 (note, not -128 to 127; this accommodates 1’s-complement platforms)
  2. unsigned char: 0 to 255
  3. “plain” char: -127 to 127 or 0 to 255 (depends on default char signedness)
  4. signed short: -32767 to 32767
  5. unsigned short: 0 to 65535
  6. signed int: -32767 to 32767
  7. unsigned int: 0 to 65535
  8. signed long: -2147483647 to 2147483647
  9. unsigned long: 0 to 4294967295
  10. signed long long: -9223372036854775807 to 9223372036854775807
  11. unsigned long long: 0 to 18446744073709551615

C90 标准如下
sizeof(char) <=sizeof(short) <= sizeof(int) <= sizeof(long)
C99 标准
sizeof(char) <=sizeof(short) <= sizeof(int) <= sizeof(long) < sizeof(long long)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值