在此代码中:
#include <stdio.h>
int main(void)
{
int a[2][3] = {{1,2},{4,5,6}};
printf("%d\n",a[0][2]);
return 0;
}
输出为0
-由于数组未初始化,此输出是否是某些未定义行为的结果?
在此代码中:
#include <stdio.h>
int main(void)
{
int a[2][3] = {{1,2},{4,5,6}};
printf("%d\n",a[0][2]);
return 0;
}
输出为0
-由于数组未初始化,此输出是否是某些未定义行为的结果?
来自C标准(6.7.9初始化)
19初始化应按初始化器列表顺序进行,每个
和
10如果具有自动存储持续时间的对象未初始化
-如果它有算术类型,则初始化为(正数或正数)
所以实际上这个宣言
int a[2][3] = {{1,2},{4,5,6}};
相当于
int a[2][3] = {{1,2, 0},{4,5,6}};