2016-06-16 5 views
-5

私はC言語で小さなプログラムを作成しています.ループを2つの条件が満たされるまで終了させたくありません。whileループは複数の条件を使用して途中で中断します

これは私の問題の一例です:

int a, b, x; 
a = 3; 
b = 5; 
x = 0; 
while(x <= a && x <= b) 
    { 
     //do stuff 
     x++; 
    } 

ループ休憩時にx == aけどx != b。これはfalse && trueと評価され、falseを返すはずですが、それにかかわらず依然として壊れます。

ループが早く終了するのはなぜですか?

+0

ループが壊れていますか?あなたが実際に使用しているコードの多くを提供することができますか、なぜこれが当てはまると思いますか? – templatetypedef

+5

whileループの状態がどのように機能するのか分かりません。条件が真である間ループします。 – Jashaszun

+0

ループの条件がコードの後の文とどのくらい正確に関係していますか? –

答えて

4

あなたの質問の半分が正しく答えられました。繰り返して修正してください。

x > aまたはx < bx = 4)の場合、ループが壊れます。これはtrue && falseと評価され、falseとなり、ループが壊れているはずです。全体的な状態はtrueをするため


覚えておいてください、&&条件の両方を使用してtrueなければなりません。あなたのループを終了する場合は、両方の条件が偽のとき

したがって、のみ [今すぐ||

int a, b, x; 
a = 3; 
b = 5; 
x = 0; 
while(x <= a || x <= b) 
    { 
     //do stuff 
     x++; 
    } 

使用し、それまでは条件の両方がfalseがある、あなたのループが実行する必要があります。

+0

ああ、今はすべて意味があります。私は愚かな瞬間をしています。これは確かに私の問題を修正しました。私は時間遅れが上がるとすぐに答えとして選択します。 – PairedPrototype

+0

@PairedPrototype、素晴らしい:) – Haris

1

このコンテキストでは無効な論理and(& &)演算子を使用しています。あなたのループは途中で壊れていない、それはxが3より遅いときに壊れている、それは正しい。代わりに、二重パイプ(||)と呼ばれる論理or演算子を使用する場合

関連する問題