注意:
因为C语言定义了char类型是1字节,所以char类型的大小一定是1字节,所以在char类型为16位,double类型为64位的系统中,sizeof给出的double就会是4字节。
sizeof()返回值的单位是字节!!(sizeof运算符以字节为单位返回运算对象的大小,运算对象可以是具体的数据对象(如,变量名)或类型,如果运算对象是类型(如,float),则必须用圆括号将其括起来。<约定:在我们实际编写代码的过程中,不管运算对象是哪种,统一都用有括号的形式,因为不加括号的情况难记😂>)
sizeof返回size_t类型的值,C99新增%zd转换说明用于printf( )显示size_t类型的值。如果系统不支持%zd,可使用%u或%lu代替%zd(你说d%行不行呢,也是可以的哦)
我的设备信息:(64位win10操作系统,8GB+256GB)
代码如下:C Project
(将代码中的转换说明全部换成%zd也是ok的)
#include <stdio.h>
#include <stdlib.h>
int main()
{
/* 整形(默认是 signed ) */ //字符型归于整形
printf("/* 1、整型*/\n\n");
printf(" /* 1.1、整形(默认是 signed ) */ //字符型归于整形\n");
printf("\tsizeof(short):%d\n",sizeof(short));
printf("\tsizeof(int):%d\n",sizeof(int));
printf("\tsizeof(long):%d\n",sizeof(long));
printf("\tsizeof(long long):%d\n",sizeof(long long));
printf("\tsizeof(char):%d\n",sizeof(char));
/* 整型加unsigned之后结果一样*/
printf("\n /* 1.2、整型加 unsigned 之后结果一样*/\n");
printf("\tsizeof(unsigned short):%d\n",sizeof(unsigned short));
printf("\tsizeof(unsigned int):%d\n",sizeof(unsigned int));
printf("\tsizeof(unsigned long):%d\n",sizeof(unsigned long));
printf("\tsizeof(unsigned long long):%d\n",sizeof(unsigned long long));
printf("\tsizeof(unsigned char):%d\n",sizeof(unsigned char));
printf("\n\n");
/* 浮点型*/
printf("/* 2、浮点型*/\n");
printf("\tsizeof(float):%u\n",sizeof(float));
printf("\tsizeof(double):%u\n",sizeof(double));
printf("\tsizeof(long double):%d\n",sizeof(long double));
printf("\n");
return 0;
}
运行截图如下: