为什么第一个 for 循环没有在代码块中执行?

Why is 1st for loop isn't getting executed in Code blocks?

这是一个求矩阵范数的程序。我正在使用代码块来编写代码。此代码中用于填充矩阵的第一个 for 循环不会在代码块中执行,而是在在线 c 编译器中执行。为什么会这样?

///求矩阵的范数

#include<stdio.h>
#include<math.h>
void main()
{
    short int r,c;

    register short int i,j;

    //fill matrix
    printf("\nENTER MATRIX DIMENSION");
    printf("\nROWS: ");
    scanf(" %d",&r);
    printf("COLUMNS: ");
    scanf(" %d",&c);

    printf("\ncheck1");

    --r; --c;
    printf("\ncheck2");
    float mat[r][c],sum,norm;

    printf("\ncheck3");

    //1st for loop:fill array                  
    for(i=0 ;i<= r ;i++)
    {
        for(j=0 ;j<= c ;j++)
        {
            printf(" \nELEMENT %d x %d: ",i,j);
            scanf(" %f",&mat[i][j]);
        }
    }

 printf("\ncheck4");
 
    //finding norm
    sum = 0;
     for(i=0;i<=r;i++)
    {
        for(j=0;j<=c;j++)
        {
            sum = sum + pow(mat[i][j],2);
        }
    }

    norm = pow(sum,0.5);
    printf("\n\nNORM: %f",norm);
}

代码正确但 for 循环未执行,因为条件:

for(i=0;i<=r;i++)

i<=r 越来越假了。

为什么? 因为垃圾值存储在您的变量 rc.

您正在使用用于 int 的格式说明符 %d。 格式说明符简称为 %hd.
只需使用%hd,一切都会正常。