我在C中實現了一個計算機模擬器,不接受使用條件的挑戰(例如,沒有if/else,switch/case,while/for等)。我正在模擬的硬件中有很多複用器,所以如果我可以使用條件三元邏輯運算器將會很好。所以,我的問題是:C編譯器是否使用三元邏輯運算符創建MUX邏輯,還是創建分支?三元邏輯和多路複用器邏輯之間的連接?
實施例:
int a, b, q, r;
/* Ternary logic */
r = q ? a : b;
/* MUX equivalent logic */
r = (q & a) | ((~q) & b)
/* Branch equivalent logic */
if (q) r = a; else r = b;
1.我知道三元運算符相當於一個分支,如上所述。我問的是,「編譯器在彙編層面上生成了一個分支嗎?」 2.我沒有發現&&和||的任何用處布爾運算符到目前爲止。我會記住你的見解。我對你使用「空白」一詞感到困惑。但是你是對的,在大多數情況下,我應該切換到〜(這是一個簡單的1位值的例子,但我會編輯它)。 – Robz 2011-02-27 14:02:30
@Robz:1.一般來說,是的。 – 2011-02-27 14:07:04
1.是的(它不能評估其他分支)。 3.零 – AProgrammer 2011-02-27 14:40:04