Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单嵌套for循环在C中无法正常工作(2D数组初始化)_C_Arrays_Loops_Matrix_2d - Fatal编程技术网

简单嵌套for循环在C中无法正常工作(2D数组初始化)

简单嵌套for循环在C中无法正常工作(2D数组初始化),c,arrays,loops,matrix,2d,C,Arrays,Loops,Matrix,2d,我不明白为什么这个简单的代码有这种奇怪的行为 `代码: int main(){ int m[10][10]; int i=0; int j=0; for (i;i<10;i++) { for (j;j<10;j++) { m[i][j]=i+j; printf("%d ", m[i][j]); } printf("

我不明白为什么这个简单的代码有这种奇怪的行为

`代码:

  int main(){

  int m[10][10];
  int i=0;
  int j=0;
  for (i;i<10;i++) {

       for (j;j<10;j++)  {
                   m[i][j]=i+j;
                   printf("%d ", m[i][j]);
                   } 
        printf("\n");                      
         }  
  printf("%d ", m[4][3]);
  }
intmain(){
int m[10][10];;
int i=0;
int j=0;

对于(i;i而言,
m[4][3]
正在打印
32678
的原因是,在外部循环的第一次迭代期间调用
printf()
时,数组的该部分尚未初始化

内部循环代码在一次迭代后结束,因为每次迭代
i
后,您从未将循环计数器
j
初始化为0。请改用此代码:

int main() {
    int m[10][10];

    for (int i=0; i<10; i++) {
        for (int j=0; j<10; j++) {
            m[i][j] = i + j;
            printf("%d ", m[i][j]);
        } 
        printf("\n");                      
    }  
}
intmain(){
int m[10][10];;
对于(int i=0;i

值之间有
9
行,因为
printf(“\n”);
run
9
time在循环内,然后打印
m[4][3]
的值(当然不是它的值,它只是抛出一些随机值).

您的
for
循环有点奇怪,因为您实际上没有在初始化表达式中为循环计数器赋值。例如:

for (i;i<10;i++) {
你应该把它修好


请注意,例如,
j;
而不是
j=0;
,因为初始化表达式仍然有效,所以它不起任何作用。

考虑
for(j;j)您在哪里找到这样的for循环:
for(i;i当只有一个循环时,它会工作,初始化在代码之前。我认为这是一个坏习惯,我应该改掉。好的@Gandi,但是如果你在循环之前初始化
i
,你可以为它写
(;他在c语言中工作,for循环头中的声明不起作用。这并不让我感到惊讶,但他在循环中使用的逻辑是一个更大的问题。至少他的程序将编译并输出一些东西……这一点在最小的调试尝试下是显而易见的:(我现在明白了,答案是显而易见的。在问这个问题之前,我至少花了8个小时寻找类似的问题,但不知何故,我的大脑没有注意到j=0,我不知道为什么。我可能已经搜索了整整一周,可能没有注意到这个问题。有时这些停电会发生,至少它们发生在我身上。(不过,谢谢你教我“公然”这个词,英语不是我的母语,这是我第一次看到它)。
 for (i=0;i<10;i++)
     {
         for (j=0;j<10;j++)
for (i;i<10;i++) {
for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {