如何缩短|| if语句c ++中的代码

时间:2017-02-21 11:23:02

标签: c++

基本上做密码生成器。想要过滤掉ASCII字符91-96 这是我的if语句。我怎样才能缩短它的样子 " randomnumber == 91-96"不必重复自己?

if (randomnum == 91 || randomnum == 92 || randomnum == 93 || randomnum == 94 || randomnum == 95 || randomnum == 96) // We dont want values 91 - 96
    { // Do nothing
    }

3 个答案:

答案 0 :(得分:4)

如果您要过滤掉'Z''a'之间的部分,

if (randomnum > 'Z' && randomnum < 'a')

会更具可读性。

答案 1 :(得分:3)

if (randomnum > 90 && randomnum < 97) // We dont want values 91 - 96
{ // Do nothing
}

答案 2 :(得分:0)

由于您要过滤掉91到96之间的ASCII字符,您也可以通过以下方式进行:

if (randomnum >= 91 && randomnum <= 96)
{ 
     // do stuff
}

这大大缩短了代码。和&amp;&amp;用于检查char是否小于或等于96 AND 大于或等于91.这称为逻辑AND运算符。

编辑:关注@ PeteBecker的建议,这是一个更好的方法来做if语句:

if (randomnum >= '[' && randomnum <= '`') // Notice that I use a char value here with the comparison operator
{ 
     // do stuff
}

这里的区别在于randomnum是一个char变量,因此我们在比较中仅使用char值是有意义的。使用int值,如上所述,也会将非ASCII值过滤为纯整数。虽然两种形式的if语句都可以起作用,但在带有char变量的比较运算符中使用char值会更好。

另外,我找到了&#39; [&#39;和&#39;`&#39;来自ASCII表;它的DEC值分别为91和96分别指的是。