次のCコードの抜粋を考えてみましょう。奇妙な条件のチェック
while(!var_can_be_0_or_1 && foo_returns_0_or_1(arg1, arg2)) {
body;
}
私が理解していないことは簡単な状態文です。しかし、のは、私は2つのマクロ
#define TRUE 1
#define FALSE 0
を持っているとしましょう誰かが我々がここでこのwhileループ条件でチェックしているかを教えて(というか私に説明)していただけますか?私は、ループボディがどのような条件で実行され、どの条件でスキップするのかを意味していますか?
推敲
私はPostfix一つに中置式の文字列を変換するプログラム内のデータ構造についての本でそれを発見しました。正確なコードは次のようなものでした--->
int prcd(char char);
int und, outpos;
char symb, topsymb;
while(!und && prcd(topsymb, symb)) { <----- Stuck on this one real bad
postr[outpos++] = topsymb;
popandtest(&opstk, &topsymb, &und);
}
おそらく、詳細は文脈に入れる必要はありません。 ;)
EDIT:
質問が支援しようとしている人々に、やや不明であった場合、私は本当に申し訳ありませんが、私は、私は本当にここ
を求めていますかについてもう少し説明しますのは、私はこのテキストの精巧な部分に書いたコードを忘れて、最初の1に戻って、ちょうど私たちはwhileループ、無地でシンプルな持って言わせてみましょうしばらくここでループ
while(!condition1 && condition2) {
execute some codes;
}
、= の場合、undは0または1のいずれかの値を持つintです(そして何も指定しないでください)。 0と1はそれぞれFALSE
とTRUE
にマクロ化されています。そして、condition2
= prcd(topsymb, symb)
;プロトタイプがint prcd(char char);
と記載されている関数です。再び、0または1と何も返されません。
ここで私が知りたいのは、です。ループ内の条件が評価されます。
これは物事をクリアします。私が意味する:)
「私が知りたいのは、whileループの括弧内の状態がどのように評価されるかです。これが問題を解決することを願っている」 - いいえ、物事を明確にしていない。答えは以前と同じです。条件が満たされている場合にのみ、whileループ内のすべてが「評価」されます。 –
@SaniSinghHuttunen私の親愛なる先生、もちろんあなたの答えは変わりません。私は単に質問を理解するのに苦労している人々のためにいくつかの編集をしました。しかし、あなたは私が最初に求めていたことを正確に知っていました。 Thanks again again :) – allocated
condition1とcondition2が1,0または1,1の場合、condition1のみが評価され、ループは実行されません。 0,0 - 両方の条件が評価されますが、ループは実行されません。 0,1 - 両方の条件が評価され、ループが実行されます。 – Dmitri