2017-04-27 10 views
-1

私は単にユーザ入力aとbの値を持つプログラムを求め、値aがbより小さい場合、このプロセスを繰り返す。ここ は私のプログラムは次のとおりです。私はちょうどCのプログラミングでループを学習し始めましたが、私の知識をテストするための単純なプログラムを作成しようとしましたが、うまくいきませんでした


#include <stdio.h> 
#include <math.h> 
int main(void) 
{ 
     int a, b ,c; 

while (a<=b) 
{ 
     printf("Please enter a value for a:\n"); 
     scanf("%d", &a); 
     printf("Please enter a value for b:\n"); 
     scanf("%d", &b); 

     if (a<=b) 
       printf("a must be greater than b:\n"); 
} 
     c=a+b; 
     printf("The answer of c is: %d\n", c); 
return 0; 
} 

とすぐに私はプログラムを実行すると、それは出力します。「Cの答えは:1829030」 (最後の番号は常にランダムであることに注意してください)

私はこのプログラムを実行してください。

答えて

0

初期化されていない非静的ローカル変数の値は不定です。つまり、この値は実行時には何でもかまいません。この場合、a、b、cの値はランダムであり、ループはa、b、cのランダム値に基づいて入力されても入力されなくてもよい。

試してみる -

int a = 0, b = 0, c; 
0

あなたは変数を宣言a, b, cいますが、それらに初期値を与えることはありません。つまり、それらは不確定な値を持っています。 値が指定されていないa and bを宣言した直後に、あなたはwhile (a <= b)の状態でそれらを比較して比較します。 Cは、これらの無価値変数を明らかに比較する方法を知らないので、ループ全体をスキップします。 最初にint a = 0, b = 1の値を指定すると、この問題を回避できます。 この方法でループが少なくとも1回は実行されることを確認します。初期化されていない変数とどうなりますか

この他SO answer

+0

に説明されてありがとう! しかし、私はaとbを値なしで宣言せずにプログラムを使用しており、プログラムは機能しています。これらを値で宣言しなければならない時を説明してください。 –

+0

SOのこの他の答えをお読みください:http://stackoverflow.com/questions/4532871/define-integer-int-whats-the-default-value –

関連する問題