C 结构、联合、枚举 测试 3

5 Sept 2024 | 2 分钟阅读

11) 下面联合定义的 size 是多少?

  1. 4
  2. 8
  3. 2
  4. 1

正确选项是 (a)。

说明

联合是一种特殊的 C 语言数据类型,它允许在同一内存位置存储不同的数据类型。

联合的所有成员共享同一块内存,联合的大小等于其最大成员的大小。

因此,程序输出或联合定义的 size 是 **4**。


12) 下面程序的输出是什么?

  1. 4 4 垃圾值
  2. 4 4 0
  3. 4 4 4
  4. 编译错误

正确选项是 (c)。

说明

使用指针访问结构成员的两种可能方法是使用 * 或 ->(箭头运算符)。

因此,程序的输出是 4 4 4


13) 如果一个整数是 2 字节,一个字符是 1 字节,一个长整数是 4 字节,那么下面的结构是否总是占用 7 字节?

  1. 是的
  2. 不能

正确选项是 (b)。

说明

编译器可能会在结构中的第一个字符留空,填充一个字节,以确保整数存储在某个位置。

此外,整数后还有 2 个额外的字节,以确保长整数存储在以 4 为倍数的特定地址。

因此,该结构并不总是占用 7 字节。


14) 哪种数据类型不能在 switch-case 语句中进行检查?

  1. enum
  2. 字符
  3. 整数
  4. float

正确选项是 (d)。

说明

在 C 语言中,**switch/case** 语句根据语言规范是使用 **int** 值定义的,因此我们不能在 switch/case 语句中使用 **float** 值。


15) 在 C 语言中,允许嵌套联合。

  1. true
  2. False

正确选项是 (a)。

说明

正确,C 语言允许使用嵌套联合。因此,我们可以在 C 程序中使用联合内部的联合。