我不明白我的程序的某些内容。代码如下:
#include <stdio.h>
int main(){
int t[2][5], i, j;
t[1][0]=2;
t[1][1]=3;
t[1][2]=4;
t[1][3]=5;
t[1][4]=6;
t[0][2]=7;
t[1][2]=8;
for(i=0; i<2; i++){
for(j=0; j<5; j++){
printf("%d ", t[i][j]);
}
printf("\n");
}
for(i=0; i<2; i++){
t[0][i]=0;
}
for(i=0; i<2; i++){
for(j=0; j<5; j++){
printf("%d ", t[i][j]);
}
printf("\n");
}
return 0;
}
它给了我这个输出:
0 0 7 0 4196128
2 3 8 5 6
0 0 7 0 4196128
2 3 8 5 6
我不明白为什么会弹出 4196128。请解释一下。
我认为这与编译器有关。
最佳答案
不,它与单位化值及其用法有关。
对于数组t[0]
,您从未初始化过t[0][2]
之外的任何元素。因此,其他元素的值仍然是“不确定的”。
现在,元素
- 有一个可以具有陷阱表示的类型
- 他们的地址从未被盗
因此,尝试使用任何具有不确定值的元素的值将是 undefined behaviour .
关于c - 打印矩阵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991810/