当初始化程序多于数组大小时,行为是什么?

md5*_*md5 2 c arrays initialization object-initializers aggregate-initialization

我想知道当初始化程序多于数组大小时会发生什么,例如:

int t[3] = { 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)

当然,我的编译器警告它.我期望未定义的行为,但我没有在C11标准中找到任何关于它的条款.那么,我错过了什么吗?

Jam*_*lis 6

代码在C和C++中都是错误的.

C++11§8.5.1[dcl.init.aggr]/6状态:

一个初始化列表如果数量是形成不良的初始化子句超过构件或元件来初始化的数量.

C11§6.7.9/ 2规定:

初始化程序不应尝试为未初始化的实体中包含的对象提供值.