📌  相关文章
📜  教资会网络 | UGC NET CS 2014 年 12 月 – II |问题 13(1)

📅  最后修改于: 2023-12-03 15:10:14.232000             🧑  作者: Mango

UGC NET CS 2014 December-II Question 13

这个问题出现在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 个字节空间。