我有一个关键的代码部分,它检查许多字符串中的每个字符,以确保它在可接受的范围内。
有什么方法可以在不分支的情况下执行这种过滤?
...
int i, c;
int sl = strnlen(s, 1023);
for( i = 0; i < sl; i++ ) {
c = s[i];
if( c < 68 || c > 88 )
return E_INVALID;
}
if( 0 == i )
return E_INVALID;
... do something with s ...
我在想某种使用按位运算的过滤可能是可能的,但实际上我看不出如何使这项工作。按位与 95 将范围缩小到 0-31,64-95。如果不引入 if 测试,我无法看到如何进行,从而提出跳过分支空白的想法。