你好,C语言
上QQ阅读APP看书,第一时间看更新

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语言标准中高级别类型的取值范围不得小于低级别类型的规定,因为它们仍然可以是一致的。

接下来,我们将继续讨论各种数据类型能够表达的数值范围的具体细节。