我們來考慮下面的C代碼片段。奇怪狀態檢查
while(!var_can_be_0_or_1 && foo_returns_0_or_1(arg1, arg2)) {
body;
}
這是一個簡單的條件聲明,做我不明白的東西。但是讓我們說我有兩個宏
#define TRUE 1
#define FALSE 0
有人可以告訴我(或者向我解釋)我們在此while循環的條件下檢查什麼?我的意思是在什麼情況下循環體將執行以及它將跳過哪些條件?
精
我發現它在一本關於數據結構,其中綴表達式串轉換爲一個後綴的程序。確切的代碼是這樣的--->
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);
}
說明可能是不必要的,但只是把事情放到上下文中。 ;)
編輯:
我真的很抱歉,如果這個問題有點不清楚的人誰試圖幫助,所以我會解釋多一點什麼我真的問這裏
讓我們忘了我在本文的精心部分寫的代碼,並返回到第一個,讓我們只說我們有一個while循環,簡單明瞭,同時循環
while(!condition1 && condition2) {
execute some codes;
}
這裏,condition1
= und
,und是一個int,其值可以是0或1(和NOTHEELSE)。 0和1分別被宏觀化爲FALSE
和TRUE
。和condition2
= prcd(topsymb, symb)
;這是一個函數,其原型被提及爲int prcd(char char);
。它再一次返回0或1和NOTHEELSE。
現在我想知道的是如何while
循環括號內的條件得到評估。
希望這可以解決問題。 :)
'我想知道的是如何評估while循環括號內的條件。希望這可以解決問題。「 - 不,它不會清除事情。答案仍然和以前一樣。當且僅當滿足條件時,while循環內的所有內容才被「評估」。 –
@SaniSinghHuttunen我親愛的先生,當然你的答案保持不變。我只是爲那些理解這個問題的人做了一些修改。但你首先知道我究竟在問什麼。再次感謝:) – allocated
如果condition1和condition2是:1,0或1,1 - 只評估condition1,並且循環不執行; 0,0 - 兩種條件都被評估,但循環不執行; 0,1 - 兩個條件都被評估,循環執行。 – Dmitri