C语言变量所占的字节数

在C语言中,变量所占的字节数取决于其数据类型以及运行程序的计算机架构(特别是其字长和操作系统)。下面是一些常见数据类型在大多数现代32位和64位系统上的大致字节数。请注意,这些数值可能会因编译器、操作系统或特定的硬件平台而有所不同。

32位系统(典型)

  • char: 1字节
  • signed char: 1字节
  • unsigned char: 1字节
  • short: 2字节
  • int: 4字节
  • long: 4字节
  • long long: 8字节
  • float: 4字节
  • double: 8字节
  • long double: 取决于系统和编译器,通常是8字节或12字节
  • 指针(如int *char *): 4字节 

64位系统(典型)

  • char: 1字节
  • signed char: 1字节
  • unsigned char: 1字节
  • short: 2字节
  • int: 通常情况下是4字节(但某些系统或编译器可能使用8字节)
  • long: 在大多数64位系统上,long是8字节
  • long long: 8字节
  • float: 4字节
  • double: 8字节
  • long double: 取决于系统和编译器,但通常是16字节
  • 指针(如int *char *): 8字节

其他注意事项

  • bool类型的大小取决于编译器实现,但通常是1字节。
  • 结构体(struct)和联合体(union)的大小取决于其成员的大小和内存对齐规则。
  • 数组的大小是其元素大小与元素数量的乘积。
  • void *(通用指针)的大小与系统的指针大小相同,在32位系统上通常是4字节,在64位系统上通常是8字节。
  • size_tptrdiff_t等类型的大小取决于系统和编译器,用于表示对象的大小和指针差异。

 

如何检查

你可以使用sizeof运算符来检查特定类型或变量在特定编译器和平台上的大小。例如:

#include <stdio.h>  
  
int main() {  
    printf("Size of char: %zu bytes\n", sizeof(char));  
    printf("Size of int: %zu bytes\n", sizeof(int));  
    printf("Size of long: %zu bytes\n", sizeof(long));  
    printf("Size of float: %zu bytes\n", sizeof(float));  
    printf("Size of double: %zu bytes\n", sizeof(double));  
    // ... 检查其他类型 ...  
    return 0;  
}

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值