【发布时间】:2012-12-22 23:34:35
【问题描述】:
int n = 1; //Arbitrary value
for ( int i = 0;i < 8;i++ )
{
printf( "%d",n & ( 1 << i ) ? 1 : 0 ); //Ternary
printf( "%d",0 || n & ( 1 << i ) ); //Logical OR
}
在循环中的两个表达式中,哪一个更适合用于打印二进制值的 0 或 1 状态? (基本上打印二进制字符串表示)。
【问题讨论】:
-
哈哈...它们都一样不可读。
-
我不明白需要三元表达式或逻辑或。没有这些,也可以产生相同的输出。
-
它们都很难阅读,所以从这个角度来看它们同样糟糕。并且可能也没有明显的效率差异,因为打印(可能)需要最多的时间,甚至是缓冲的。第二个可能更快,因为它没有潜在的跳跃。但是话又说回来,从三元运算符的跳转可能会被编译器优化掉。
-
所以共识是:不可读。好吧好吧,我投降!
标签: c binary bit-manipulation