c - 打印矩阵值

标签 c arrays initialization

我不明白我的程序的某些内容。代码如下:

  #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/

相关文章:

PHP MySQL内容保存到按id排序的数组

swift - 在 swift 上初始化一个带参数的类

c++ - 如何在 C++ 对象中初始化数组

c - 错误 : control may reach end of non-void function in C

c - C是否允许按地址传递参数?

c - yacc 缺少左括号的错误处理

c - K&R的getc和putc实现对吗?

javascript - 空值其实不就是空吗?

arrays - Kotlin 中的数组声明大小是否可以仅通过初始化来实现?

c++ - 有没有办法在初始化列表中调用成员函数?