看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《yenhun (大狗)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Linux : 程式碼(Code):(請善用置底文網頁, 記得排版) : 以前看到的for loop大都是一開始初始條件式或增量的地方 : 看到有兩個以上statement , 用逗號隔開 : 但今天看到有個for loop , 是在條件判斷式的地方有兩個statement , 用逗號隔開 : 如下 : : #define Bfunc(cpu, mask) \ : for ((cpu) = -1; \ : (cpu) = Afunc((cpu), (mask)), \ : (cpu) < 3;) : 請問像這樣的for loop : 是(cpu) = Afunc((cpu), (mask))與 (cpu) < 3 同時為真 , 才會往下執行? : 還是其中一個為真 , 就會往下執行了呢?? : 懇請高手大大解答! 謝謝! http://en.wikipedia.org/wiki/Comma_operator In the C and C++ programming languages, the comma operator (represented by the token ,) is a binary operator that evaluates its first operand and discards the result, and then evaluates the second operand and returns this value (and type). 所以 (cpu) = Afunc((cpu), (mask)), (cpu) < 3 總共會做: 1. (cpu) = Afunc((cpu), (mask)) 2. 判斷 1. 的值(assignment 述式回傳左值) 3. 判斷 (cpu) < 3 的值 4. 把 2. 的結果丟掉, 回傳 3. 的結果 -- Les grandes et les meilleurs tone from "Zadok the Priest" Eine grosse stattliche Veranstaltung by F. Handel THE MAIN EVENT! These are the men Sie sind die Besten "Champions League" by Tony Britten THESE ARE THE CHAMPIONS! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146
LPH66:不過是我的話我會把 Afunc 那句寫在第二個 ; 後面 02/26 17:41
LPH66:因為那看起來似乎還是有類似遞推的語意在 放那兒正好 02/26 17:42
yenhun:萬分感謝兩位的回答! 02/26 21:36