我刚开始学习C语言。所以,我遇到了很多问题。我以为在for循环下声明i就足够了,我也可以在外部使用i for的值。但我认为,事实并非如此。请有人解释一下情况。
# include <stdio.h>
int main(void)
{
int x;
printf("Enter how many numbers in arrays you want to input : ");
scanf("%i", &x);
int score[x];
for(int i= 0; i <= x; i++)
{
printf("Enter the score : ");
scanf("%i", &score[i]);
}
// in the below line the output said "i" is undeclared.
float average = score[i] / x;
printf("The average score is : %f", average);
}
3条答案
按热度按时间k75qkfdt1#
答案相当简单
因为你decaled
i
的位置,它只对for循环可见。要使i
对整个函数可见,你需要做的就是:这使得
i
在整个函数中都可用58wvjzkj2#
i
在for
语句的初始化部分声明。这意味着该变量的作用域和生存期是for
语句本身及其包含的块语句中的表达式。一旦循环完成,该变量就不再存在。如果要在循环外部使用
i
,则需要在循环外部声明它。也就是说,您实际上不需要在循环之外使用
i
。cnjp1d6j3#
使用scanf会有一些安全问题,所以不要把它用在任何严肃的事情上。也就是说,我试着重新编写你的程序,但它仍然有相当垃圾的输入验证。