#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
最初の変数の後に破棄されるブロックスコープを持つ2番目の変数を導入していました}
。自動オブジェクトの存続期間は、宣言されたブロックの終わりで終了します。
于 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をintnとして宣言するのですか?次のように変更するだけです:
n = GetInt();
内側のnのスコープは、doの「}」までです。その後は使用されませんでした。ループの外側のnは使用されるnです
于 2013-01-27T13:01:34.223 に答える