C语言的基础类型的内存空间
程序员文章站
2022-03-21 23:49:36
...
学习C语言的时候,对C语言的基础类型所占用的内存空间是非常模糊的。查阅资料,才知道C语言的基础类型占用的内存空间与编译器位长有关,常见是16位、32位、64位。维西目前用的是32位、64位编译器,而16位的数据是查阅资料得来的,问号是尚未查阅到,欢迎纠错、补充。
int,long int,short int的宽度都可能随编译器而异。但有几条铁规(ANSI/ISO制订的):
1、sizeof(short int)<=sizeof(int)
2、sizeof(int)<=sizeof(long int)
3、short int至少应为16位(2字节)
4、long int至少应为32位(4字节)
按表格总结:
1)字符类型char占1个字节。
2)浮点型基本类型float、double分别占4个字节和8个字节。
3)short int等短最短(最短指在整型里最短字节数是2),占2个字节。long long等长最长(最长指在整型里最长字节数是8),占8个字节。
4)无符号修饰的基础类型所占空间大小不变,如int和usigned int。
5)指针类型对应编译器位长。
测试代码如下:
/**************************************************************************
* 文件名:size.c
*
* 作者:维西多莉
*
* 功能:查看C语言在32位编译器环境下的基础类型占用的内存空间大小
*
* 日期:2018/8/29
*
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *c;
int *i;
double *d;
long long *ll;
printf("64位系统\n\r");
printf("char 占内存:%d个字节\n\r", sizeof(char));
printf("float 占内存:%d个字节\n\r", sizeof(float));
printf("double 占内存:%d个字节\n\r", sizeof(double));
printf("int 占内存:%d个字节\n\r", sizeof(int));
printf("unsigned int 占内存:%d个字节\n\r", sizeof(unsigned int));
printf("short int 占内存:%d个字节\n\r", sizeof(short int));
printf("long int 占内存:%d个字节\n\r", sizeof(long));
printf("unsigned long 占内存:%d个字节\n\r", sizeof(unsigned long));
printf("long double 占内存:%d个字节\n\r", sizeof(long double));
printf("long long 占内存:%d个字节\n\r", sizeof(long long));
printf("int 占内存:%d个字节\n\r", sizeof(int));
printf("------------------分割线----------------\n\r");
printf("char * 占内存:%d个字节\n\r", sizeof(c));
printf("double * 占内存:%d个字节\n\r", sizeof(d));
printf("int * 占内存:%d个字节\n\r", sizeof(i));
printf("long long * 占内存:%d个字节\n\r", sizeof(ll));
system("pause");
return 0;
}
32位结果图如图2所示。
64位结果图如图3所示。
上一篇: Arduino简单实战“光敏小夜灯”
下一篇: 关于红外遥控器解码的一点疑问
推荐阅读