c-关于初始化变量的冲突错误消息



这是我的代码:

''

int main(void)
{   
int j;
int i;
int k;
int n;
int w;


do
{
int j = get_int("Height: n ");
}
while (j < 1 || j > 8);


for (i=0; i<=j; i++)
;
{   
w = 6-i;
for (k=0;k<=w;k++)
;
{
printf(" ");
}

for (n=1; n<=j; n++)
;

{  
printf("#");
}

printf("  "); 

for (n=1; n<=j; n++)
;
{  
printf("#");
}
}

}    

''我不断收到这些错误消息,其中一条告诉我需要初始化J,而另一条告诉我这有问题。我该怎么办?我真的很感激任何帮助,谢谢!

mario1.c:15:12:error:声明隐藏了一个局部变量[-Werror,-Wshadow]int j=get_int("高度:\n"(;^mario1.c:6:9:注意:之前的声明在这里int j;^mario1.c:17:12:错误:使用变量"j"时未初始化此处[-Werror,-Wuninitialized]而(j8(;^mario1.c:6:10:注意:初始化变量"j"以使其静音警告int j;^=0

错误消息

问题就在这里:

int j;
do
{
int j = get_int("Height: n ");
}
while (j < 1 || j > 8);

您在循环中定义了一个全新的变量j。此变量在循环外隐藏同名变量。循环中的变量j只存在于大括号内,其作用域和寿命以大括号}结束。

循环条件中使用的循环外的变量实际上未初始化。

简单的解决方案是不在循环中定义新的变量:

int j;
do
{
j = get_int("Height: n ");
}
while (j < 1 || j > 8);

最新更新