我在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