更快的方式来做到这一点?
有没有更好的办法做这样的事情......更快的方式来做到这一点?
int VarableNumberOne = RandomNumberGenerator();
int VarableNumberTwo = RandomNumberGenerator();
if(VarableNumberOne == 4 || VarableNumberOne == 8 || VarableNumberOne == 12)
{
//do code
}
else if(VarableNumberTwo == 4 || VarableNumberTwo == 8 || VarableNumberTwo == 12)
{
//do code
}
人谁可以拿出代码的最短将获胜。
这取决于什么RandomNumberGenerator
返回。假设4,8和12的4它将返回唯一的倍数,你可以做这样的事情:
if (VarableNumberOne % 4 == 0)
{
//do code
}
else if (VarableNumberTwo % 4 == 0)
{
//do code
}
if (variableNumberOne & 12) {
// ...
} else if (variableNumberTwo & 12) {
// ...
}
您需要检查所需的值的反向掩码,如果值不为零。
int a = RandomNumberGenerator();
int b = RandomNumberGenerator();
if(a && !(a & ~12))
{
//do code
}
else if(b && !(b & ~12))
{
//do code
}
你在'const int InvMask =〜(4&8 & 12); // 0x11110011','4&8'为0时出错。它应该是'const int InvMask =〜12;'。(而不是'(v &m)== 0'你可以使用'!(v&m)'保存几个字符,因为OP要求最短的代码) – 2012-08-01 18:09:32
@Daniel Answer编辑 – ErikEsTT 2012-08-01 18:22:02
** I **不会计算空白,所以yuck要把它解决掉,但是既然你走得很远,直接使用魔术常量,'const int m ='需要很多'〜12'来补偿;) – 2012-08-01 18:26:57
原始代码有什么问题? – Caesar 2012-08-01 15:35:09
你想要“更快”,“更好”(不管是什么意思)或“最短”? – 2012-08-01 15:37:17
可以修改哪些内容以使其更快?例如:您是否只能在其他情况下评估VarableNumberTwo? – tgmath 2012-08-01 15:43:45