📜  C测验– 112 |问题3

📅  最后修改于: 2021-05-29 12:59:47             🧑  作者: Mango

选择以下程序的最佳陈述:

#include "stdio.h"
  
int main()
{
 struct {int a[2], b;} arr[] = {[0].a = {1}, [1].a = {2}, [0].b = 1, [1].b = 2};
  
 printf("%d %d %d and",arr[0].a[0],arr[0].a[1],arr[0].b);
 printf("%d %d %d\n",arr[1].a[0],arr[1].a[1],arr[1].b);
  
 return 0;
}

(A)编译错误,因为已经指定了结构类型(包含两个字段,即一个int和一个int数组)以及此结构类型的数组arr []的定义。
(B)由于初始化数组arr []的语法不正确而导致编译错误。
(C)没有编译错误,并且将定义和初始化arr []的两个元素。输出将是“ 1 0 1和2 0 2”。
(D)没有编译错误,并且将定义和初始化arr []的两个元素。输出将是“ 1 X 1和2 X 2”,其中X是某个垃圾随机数。答案: (C)
说明:在C中,可使用指示符提供显式的初始化。对于数组,未在程序中显式初始化的元素设置为零。这就是为什么正确答案是C。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。