📅  最后修改于: 2023-12-03 15:10:14.232000             🧑  作者: Mango
这个问题出现在UGC NET CS 2014 年 12 月 – II 的考试中,适合计算机科学领域的程序员。
考虑下面的c程序片段
#include <stdio.h>
int main()
{
printf("%d ",sizeof('a'));
printf("%d ",sizeof("a"));
return 0;
}
以下哪一个是c程序输出的结果?
A. 4 2
B. 2 4
C. 1 1
D. 4 4
程序输出为:
4 2
因为 'a'
是一个字符常量,C 编译器将其定义并存储为整数类型。所以 sizeof('a')
输出的是字符常量的整数类型的大小,即 4 个字节。
而 "a"
是一个字符串常量,它是一个字符数组,并以 Null 终止。所以 sizeof("a")
输出的是字符数组的大小,即 2 个字节。
因此,答案是 A. 4 2。
可以通过以下方式运行程序
gcc program.c -o program
./program
sizeof
运算符可以用于测量数据类型或变量所占用的字节数。sizeof('a')
和 sizeof("a")
区别在于一个是用于字符常量,一个是用于字符串常量。
''
括起来的单个字符""
括起来的字符序列但是当引号中仅含有一个字符时,字符串常量位于它的末尾将会有一个 null 终止字符,占用一个额外的字节空间。字符常量没有这个限制,因为只有一个字符。
因此,在这个例子中,'a'
作为一个整数类型存储,占用 4 个字节空间,而 "a"
是一个包含字符 'a' 和 null 空字符的一个字符数组,占用了 2 个字节空间。