编写C程序时需要考虑每种数据类型在内存中所占的内存大小,即使同一种数据类型在不同平台下所占内存大小亦不相同。为了得到某个类型在特定平台上的准确大写,可以使用sizeof运算符,表达式sizeof(type)得到对象或类型的存储字节大小。 char存储大小1字节,值范围-128~127;unsigned char存储大小1字节,值范围0~255;short存储大小2字节,值范围-32768~32767;unsigned short存储大小2字节,值范围0~65535;int—— 16位系统存储大小2字节,值范围-32768~32767, 32、64位系统存储大小4字节,值范围-2147483648~2147483647;unsigned int—— 16位系统存储大小2字节,值范围0~65535, 32、64位系统存储大小4字节,值范围0~4294967295;long—— 16、32位系统存储大小4字节,值范围-2147483648~2147483647, 64位系统存储大小8字节,值范围-9223372036854775808~9223372036854775807;unsigned long—— 16、32位系统存储大小4字节,值范围0~4294967295, 64位系统存储大小8字节,值范围0~18446744073709551615;float存储大小4字节,值范围1.175494351*10^-38~3.402823466*10^38;double存储大小8字节,值范围2.2250738585072014*10^-308~1.7976931348623158*10^308;long long存储大小8字节,值范围-9223372036854775808~9223372036854775807;unsigned long long存储大小8字节,值范围0~18446744073709551615;long double—— 16位系统存储大小8字节,值范围2.22507*10^-308~1.79769*10^308, 32位系统存储大小12字节(有效位10字节,为了对齐实际分配12字节),值范围3.4*10^-4932 到 1.1*10^4932, 64位系统存储大小16字节(有效位10字节,为了对齐实际分配16字节),值范围3.4*10^-4932 到 1.1*10^4932;指针—— 16位系统存储大小2字节, 32位系统存储大小4字节, 64位系统存储大小8字节。#include
#include
#include
int main(void)
{
printf("数据类型:char,存储大小:%d字节、最小值:%hhd,最大值:%hhd\n",
sizeof(char), CHAR_MIN, CHAR_MAX);
printf("数据类型:unsigned char,存储大小:%d字节、最小值:%hhu,最大值:%hhu\n",
sizeof(unsigned char), 0U, UCHAR_MAX);
printf("数据类型:short,存储大小:%d字节、最小值:%hd,最大值:%hd\n",
sizeof(short), SHRT_MIN, SHRT_MAX);
printf("数据类型:unsigned short,存储大小:%d字节、最小值:%hu,最大值:%hu\n",
sizeof(unsigned short), 0U, USHRT_MAX);
printf("数据类型:int,存储大小:%d字节、最小值:%d,最大值:%d\n",
sizeof(int), INT_MIN, INT_MAX);
printf("数据类型:unsigned int,存储大小:%d字节、最小值:%u,最大值:%u\n",
sizeof(unsigned int), 0U, UINT_MAX);
printf("数据类型:long,存储大小:%d字节、最小
|