3.1.2 sizeof测量大小
和int一样,sizeof也是C语言中的一个关键字。它由英语单词size和of组成,它的翻译意思是“大小”,可以测量C语言中各种实体所占用的字节数。
如果测量int类型占用的字节数,可以按照以下方式编写代码。
sizeof(int);
该行代码返回int类型的字节数。我们可以使用printf函数将结果显示在控制台上。假设sizeof返回int类型的值,并在printf函数中使用占位符%d输出它。更准确的方法是使用%zu占位符。以下是测量int类型占用的字节数并在控制台上输出结果的代码。
printf("%d\n", sizeof(int));
sizeof关键字可以与类型、变量和常量一起使用。
(1)与类型一起使用,用于测量类型占用的字节数。
(2)与变量一起使用,用于测量变量类型占用的字节数。
(3)与常量一起使用,用于测量常量类型占用的字节数。
注意:
以下代码省略了main函数,只把其中重要的部分提取出来进行讲解,你在实际编写代码时,必须加上main函数。
程序清单3.1展示了如何使用sizeof来测量C语言中不同类型所占用的字节数。
程序清单 3.1
int a; printf("sizeof int = %d\n", sizeof(int)); //测量类型占用的字节数 printf("sizeof a = %d\n", sizeof(a)); //测量变量类型占用的字节数 printf("sizeof 123 = %d\n", sizeof(123)); //测量常量类型占用的字节数
现在,我们可以使用程序清单3.2来检查C语言中不同整型类型所占用的字节数。
程序清单 3.2
printf("sizeof char=%d\n", sizeof(char)); printf("sizeof short=%d\n", sizeof(short)); printf("sizeof int=%d\n", sizeof(int)); printf("sizeof long=%d\n", sizeof(long)); printf("sizeof long long=%d\n", sizeof(long long));
在运行程序后,我们可以看到它输出的结果,如图3.2所示。
图3.2 sizeof整型结果
根据C语言标准,不同的数据类型在内存中占据的字节数不同。char类型占用1字节,short类型占用2字节,int类型占用4字节,long类型占用4字节,而long long类型占用8字节。通过这些实验结果,我们不仅了解了各种数据类型所占用的字节数,还验证了数据类型所能表示的数值范围与其占用的字节数成正比。
值得注意的是,与C语言标准规定的不同,Microsoft Visual Studio编译器中int类型和long类型都占用4字节。尽管如此,这并不违反C语言标准中高级别类型的取值范围不得小于低级别类型的规定,因为它们仍然可以是一致的。
接下来,我们将继续讨论各种数据类型能够表达的数值范围的具体细节。