在韩国政府的一次考试中,(1)是一个正确的陈述.

Choose the wrong statement for the following two-dimensional array in C:
int mat[3][4]={1,2,3,4,5,6};
(1) The value of mat[2][2] is 0.

我一直在想,C不会用0‘S填充整数数组,所以我试着查找规范,但文档太大了.This answer(下面的屏幕截图用于快速查看,全文在链接中)似乎是在说未完成的初始化意味着0,但C规范是否保证了这一点?

enter image description here

推荐答案

来自C标准(6.7.9初始化):

19初始化应按初始化器列表顺序进行,每个 为特定子对象提供的初始值设定项覆盖任何 之前列出的相同子对象的初始值设定项;all subobjects that are not initialized explicitly shall be initialized implicitly the same as objects that have static storage duration.

10如果具有自动存储持续时间的对象未初始化 显然,它的值是不确定的.一百:

-如果是指针类型,则初始化为空指针;

— if it has arithmetic type, it is initialized to (positive or unsigned) zero;

— if it is an aggregate, every member is initialized (recursively) according to these rules, 和 any padding is initialized to zero bits;

— if it is a union, the first named member is initialized (recursively) according to these rules, 和 any padding is initialized to zero bits;

因此,数组mat中未被显式初始化的所有元素都被隐式地用零来初始化.

int mat[3][4]={1,2,3,4,5,6};

因此,在上面的声明中,mat[2][2]等于0.

我通过韩国政府考试了吗?:)

C++相关问答推荐

当包含头文件时,gcc会发出隐式函数声明警告

POSIX文件描述符位置

C语言中字符数组声明中的标准

如何将已分配的数组(运行时已知的大小)放入 struct 中?

减法运算结果的平方的最快方法?

可以将C变量限制为特定的读/写速度吗?

是什么让numpy.sum比优化的(自动矢量化的)C循环更快?

致命错误:ASM/rwan ce.h:没有这样的文件或目录.符号链接还不够

Cairo STM32MP1 cairo_Surface_WRITE_TO_PNG始终返回CAROLIO_STATUS_WRITE_ERROR

在进程之间重定向输出和输入流的问题

在函数外部使用内联ASM时无法指定操作数

-Wnonnull-Compare警告不是具有误导性吗?

用C++构建和使用DLL的困惑

为什么我的二叉树删除删除整个左部分的树?

程序如何解释变量中的值

如何解释数组中的*(ptr)和*(ptr+2)?

gdb - 你能找到持有内部 glibc 锁的线程吗?

如何用用户输入的多个字符串填充数组?

窗口消息处理函数以某种方式更改了应保持不变的 int 变量的值

React Native Android C++ TurboModules 静态 C 库链接问题