究竟什么才算作标识符的声明?
What exactly qualifies as a declaration of an identifier?
我正在尝试构建一些代码,使其接受用户的输入,运行一个循环,获取该循环的结束值,然后通过第二个循环运行该值(我还在每个循环中添加一个计数器循环运行并在最后打印它的时间),这是我尝试编写的代码:
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
for (int q = w; q > 24; q = q - 25)
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}
我收到的错误是 error: use of undeclared identifier 'q'
。我认为,由于它在代码中较早使用,因此稍后识别它不会有问题,但显然事实并非如此。任何关于现在正确声明 'q' 的建议都将不胜感激 - 或者我的整个方法可能只是被误导了?
循环中声明的q
只在循环中有效。您应该在循环之前声明它以使其在循环之后可用。
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
int q; // declare q before the loop
for (q = w; q > 24; q = q - 25) // no declaration of q here
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}
for (int q = w; q > 24; q = q - 25)
<- q 在这个块中没问题
for (int d = q; d > 9; d = d - 10)
<- q 在此块中不存在
在int c = 0;
下方添加int q;
并修改for (int q = w; q > 24; q = q - 25)
为for (q = w; q > 24; q = q - 25)
当您在第一个循环中声明 q
时,它仅作为局部变量存在于该循环中
在 for
作用域外声明变量将使它在第二个循环中可访问
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
int q;
for (q = w; q > 24; q = q - 25)
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}```
我正在尝试构建一些代码,使其接受用户的输入,运行一个循环,获取该循环的结束值,然后通过第二个循环运行该值(我还在每个循环中添加一个计数器循环运行并在最后打印它的时间),这是我尝试编写的代码:
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
for (int q = w; q > 24; q = q - 25)
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}
我收到的错误是 error: use of undeclared identifier 'q'
。我认为,由于它在代码中较早使用,因此稍后识别它不会有问题,但显然事实并非如此。任何关于现在正确声明 'q' 的建议都将不胜感激 - 或者我的整个方法可能只是被误导了?
循环中声明的q
只在循环中有效。您应该在循环之前声明它以使其在循环之后可用。
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
int q; // declare q before the loop
for (q = w; q > 24; q = q - 25) // no declaration of q here
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}
for (int q = w; q > 24; q = q - 25)
<- q 在这个块中没问题
for (int d = q; d > 9; d = d - 10)
<- q 在此块中不存在
在int c = 0;
下方添加int q;
并修改for (int q = w; q > 24; q = q - 25)
为for (q = w; q > 24; q = q - 25)
当您在第一个循环中声明 q
时,它仅作为局部变量存在于该循环中
在 for
作用域外声明变量将使它在第二个循环中可访问
{
float input = get_float("%s", "Input: ");
float w = input * 100;
{
int c = 0;
int q;
for (q = w; q > 24; q = q - 25)
{
c++;
}
for (int d = q; d > 9; d = d - 10)
{
c++;
}
printf("%i", c);
}
}```