#include <stdio.h>
#include <cs50.h>
int main (void)
{
printf("Welcome to blabla\n");
// This next part gets user input and checks if the integer given by user is between 1 and 8
int n;
do
{
printf("Give me a integer between 1 and 8.\n");
int n = GetInt();
}
while (n >= 1 && n <= 8);
printf("You picked the number %d.\n", n);
return(0);
}
问问题
86 次
4 回答
4
改变
int n = GetInt();
和
n = GetInt();
您正在引入第二个n
具有块范围的变量,该变量将在第一个}
. 自动对象的生命周期在它被声明的块的末尾结束。
于 2013-01-27T13:00:22.027 回答
2
您在n
循环内部重新声明,因此不使用外部声明。这可能不是你想要的。
代替
int n = GetInt();
和:
n = GetInt();
于 2013-01-27T13:00:37.663 回答
2
这一行:
int n = GetInt();
试图声明一个新的局部变量n
。它与您之前声明的局部变量完全不同:
int n;
当您调用 时GetInt()
,您只想将值分配给现有变量,如下所示:
n = GetInt();
于 2013-01-27T13:00:41.823 回答
0
为什么在 do {} 中再次将 n 声明为 int n ?只需将其更改为:
n = GetInt();
内部 n 的范围是直到 do 的 '}'。之后就再也没有使用过。循环外的 n 是使用的 n
于 2013-01-27T13:01:34.223 回答