我有条件验证地址是否为 31 位,除此之外我还必须检查我们不支持的其他地址。所以条件是这样的
if ((addr & (1 << 31)) || (addr == 0x000f000))
{
printf("Not 31 bit Valid address");
}
现在我可以将其重写为
if ((addr & (1<<31)) ? 1 : (( addr == 0x000f000) ? 1 : 0))
现在有没有其他的写相同的东西,更短更独特的东西。
我有条件验证地址是否为 31 位,除此之外我还必须检查我们不支持的其他地址。所以条件是这样的
if ((addr & (1 << 31)) || (addr == 0x000f000))
{
printf("Not 31 bit Valid address");
}
现在我可以将其重写为
if ((addr & (1<<31)) ? 1 : (( addr == 0x000f000) ? 1 : 0))
现在有没有其他的写相同的东西,更短更独特的东西。
if(addr >> 31 || addr == 0x000f000)
如果您addr
至少是 32 位并且sizeof int
是 2,则以下内容可以正常工作并且可以很好地移植。
if ((addr & 0x80000000) || (addr == 0x0000f000))
更好的编码风格将避免裸幻数。
#define InvalidAddressBitMask (0x80000000)
#define SpecialBadAddress (0x0000f000)
if ((addr & InvalidAddressBitMask) || (addr == SpecialBadAddress))