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

2025 年 3 月 28 日 | 阅读 2 分钟

6) 下面的程序会输出什么?

  1. 3, 2, 5
  2. 515, 515, 4
  3. 3, 2, 515
  4. 515, 2, 3

正确选项是 (c)。

说明

在程序中,系统将为联合分配 2 字节。

语句 un.ch[0]=3; un.ch[1]=2; 将数据存储在内存中。

因此,程序的输出是 **3, 2, 515**。


7) 下列程序的输出是什么?

  1. 0, 1, 6, 3, 4, 5
  2. -1, 0, 1, 2, 3, 4
  3. 0, 0, 6, 7, 8, 9
  4. 编译错误

正确选项是 (d)。

说明

不允许在用户定义的数据类型上执行增量和减量操作。

由于 enum 是用户定义的数据类型,因此不能对用户定义的数据类型执行任何操作。

因此,在 enum 数据类型中使用这些操作时,++ 或 -- 逻辑操作无法完成,程序将在输出中返回 **编译错误**。


8) 找出下面程序中的错误?

  1. 链接错误
  2. 错误:在结构声明中
  3. 没有错误
  4. 以上都不是

正确选项是 (b)。

说明

结构 employ 包含一个类型为 struct employ 的成员 **'e'**。

此时编译器不知道结构的大小。

因此,编译器返回 **错误:在结构声明中**。


9) 找出下面程序中的错误?

  1. 错误:无效的常量表达式
  2. 错误:需要右值
  3. 错误:需要左值/赋值中的类型不兼容
  4. 无错误,输出:Nakul 22

正确选项是 (c)。

说明

在程序中,我们将字符串赋给结构变量,例如 **e.name = "Nakul";**

在 C 编程语言中,不允许将字符串赋给结构变量。

我们必须使用 **strcpy(char *dest, const char *source)** 函数来分配字符串。

例如: **strcpy(e.name, "Nakul");**

因此,编译器返回 **错误:需要左值/赋值中的类型不兼容**。


10) 下列程序的输出是什么?

  1. 0 1
  2. 0 2
  3. 0 8
  4. 编译错误

正确选项是 (c)。

说明

在 enum 数据类型中,序列始终从 0 开始。如果分配了值,则序列将从分配的值继续。

因此,0 8 是给定程序的输出。