如何更有效地和/或更快地重写此代码以节省字节并显得更简洁?
if(N % 2 == 0 && (N == 6 || N == 8 || N == 10 || N == 12 || N == 14 || N== 16 || N == 18 || N == 20 ))
{
printf("Weird\n");
}
鉴于语言是C,如果它的java或php或任何其他语言无关紧要:-)。
答案 0 :(得分:10)
为什么你不会这样做:
<div class="prtDiv">
<div class="first">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
</div>
答案 1 :(得分:5)
给定N是无符号整数。
if(N % 2 == 0 && (N-6) <= 14)
{
printf("Weird\n");
}
答案 2 :(得分:5)
假设N
具有无符号整数类型,并且您对最小源代码比对清晰度更感兴趣,那么您可以编写
if (((N - 6) & 14) + 6 == N) {
printf("Weird\n");
}
<强>解释强>:
第一项操作N - 6
将可接受值的范围从6
- 20
转移到0
- 14
。后一个范围可以用四位表示。
第二个操作& 14
是位模式1110
的按位和。这将使0
- 14
范围内的偶数保持不变,但它会将奇数转换为偶数,它将清除任何更高的位。唯一不变的值是从第一步中的原始目标值派生的值。
第三个操作反转第一个操作,因此可以将结果与原始数字直接比较。如果组合的操作序列再现原始编号,那么该编号就是您要查找的编号之一。