【发布时间】:2020-11-02 02:26:37
【问题描述】:
我希望得到一个整数 (n) 的用户输入,并将我的输出 hi 打印 n 次。
我写的代码如下:
#include <stdio.h>
int main()
{
printf("input the number: ");
scanf("%d", &i);
for (int i = 0; i<n; i++)
{
for (int j=0; j<=i; j++)
{
printf("hi");
}
printf("\n");
}
return 0;
}
但是,当我在gcc 中运行此代码时,我得到一个编译错误:
mycode.c:5:16: error: ‘i’ undeclared (第一次在这个函数中使用)
scanf("%d", &i); ^ mycode.c:5:16: 注意:每个未声明的标识符只针对它出现在 mycode.c:6:21 中的每个函数报告一次: 错误:“n”未声明(在此函数中首次使用)for (int i = 0; 我
如何修复我的代码以输出hi n 次?
【问题讨论】:
-
您似乎从未分配过
n -
i必须在第一次使用前声明。 -
请记住,在 C 语言中,编译器以 1-pass 的方式读取文件,因此在您的代码中使用
i之前,您必须声明它。在这里,你有两个问题(1)i没有在scanf()之前声明,(2)你的循环还使用了变量i——这将 shadow 任何@987654331 的声明@ 以上scanf()(选择另一个变量名)。最后,您无法正确使用任何用户输入功能,除非您检查返回以确定输入是成功还是失败。例如。if (scanf ("%d", &i) != 1) { fputs ("error: invalid integer input.\n", stderr); return 1; } -
虽然缩进之类的东西对编译器来说并不重要,但对于试图阅读和理解你的代码的人来说却很重要。随着代码变得越来越复杂,它还将帮助您理解自己的代码。