【发布时间】:2011-02-27 12:18:05
【问题描述】:
我正在用 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;
【问题讨论】:
标签: c compiler-construction ternary-operator