C语言数据类型在32位机和64位机中所占的字节

1.简单记忆 

(1)char:1 字节

(2)short:2 字节

(3)int:4 字节

(4)long:4 字节(32位机),8 字节(64位机

(5)long long:8 字节

(6)float:4 字节

(7)double:8 字节

(8)指针类型:4 字节(32位机),8 字节(64位机

 

2.详细理解
(1)char

char存储大小1字节,值范围-128~127。

unsigned char存储大小1字节,值范围0~255 。

(2)short 

short存储大小2字节,值范围-32768~32767。

unsigned short存储大小2字节,值范围0~65535。

(3)int

int存储大小4字节,值范围-2147483648~2147483647。

unsigned int存储大小4字节,值范围0~4294967295。

(4)long

long32位系统存储大小4字节,值范围-2147483648~2147483647。

long64位系统存储大小8字节,值范围-9223372036854775808~9223372036854775807。 

unsigned long32位系统存储大小4字节,值范围0~4294967295。

unsigned long64位系统存储大小8字节,值范围0~18446744073709551615

(5)long long

long long存储大小8字节,值范围-9223372036854775808~9223372036854775807。

unsigned long long存储大小8字节,值范围0~18446744073709551615。

(6)float

float存储大小4字节,值范围1.175494351*10^-38~3.402823466*10^38。

(6)double

double存储大小8字节,值范围2.2250738585072014*10^-308~1.7976931348623158*10^308。

(7)指针

32位系统存储大小4字节。
64位系统存储大小8字节。

(9)其他
  • long double32位系统存储大小12字节(有效位10字节,为了对齐实际分配12字节),值范围3.4*10^-4932 到 1.1*10^4932,
  • long double64位系统存储大小16字节(有效位10字节,为了对齐实际分配16字节),值范围3.4*10^-4932 到 1.1*10^4932。
  • 结构体的大小是其成员大小之和,但受到字节对齐的影响。这个对齐规则可以因编译器和编译选项而异,通常是按照机器字长的倍数来对齐。 
  • `void*` 类型:在32位系统上,`void*` 类型占用4字节,而在64位系统上,`void*` 类型占用8字节。
  • `size_t` 类型:在32位系统上,`size_t` 类型通常占用4字节,而在64位系统上,`size_t` 类型通常占用8字节。`size_t` 类型用于表示对象大小或数组索引。
3.求整型类型的代码示例

代码名为test.c:

#include <stdio.h>

int main()
{
    printf("\n char在32位机中所占的字节: %d bytes\n", sizeof(char));
    printf("\n short在32位机中所占的字节: %d bytes\n", sizeof(short));
    printf("\n int在32位机中所占的字节: %d bytes\n", sizeof(int));
    printf("\n long在32位机中所占的字节: %d bytes\n", sizeof(long));
    printf("\n long long在32位机中所占的字节: %d bytes\n", sizeof(long long));
    printf("\n float在32位机中所占的字节: %d bytes\n", sizeof(float));
    printf("\n double在32位机中所占的字节: %d bytes\n", sizeof(double));
    printf("\n long double在32位机中所占的字节: %d bytes\n", sizeof(long double));

    return 0;
}

运行命令:

gcc -o test.exe test.c
.\test.exe

结果如下:

 char在32位机中所占的字节: 1 bytes

 short在32位机中所占的字节: 2 bytes

 int在32位机中所占的字节: 4 bytes

 long在32位机中所占的字节: 4 bytes

 long long在32位机中所占的字节: 8 bytes

 float在32位机中所占的字节: 4 bytes

 double在32位机中所占的字节: 8 bytes

 long double在32位机中所占的字节: 16 bytes
4.参考链接

【C语言】一文概括所有C语言中各数据类型的大小 - 嵌入式小白-小黑 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值