真相表问题

时间:2013-12-17 03:14:41

标签: ascii boolean-operations truthtable

当我从文本框中检查输入时,我将其传递给循环以检查单个字符。

我有点不确定为什么会发生这种情况,但是当我输入“/”时,该函数会将其读作false?

 // Checks the Password contains the correct input 
 for (i = 0; i < passwordLength; i++)
 {
     v = Convert.ToInt32(passwordArray[i]);
     // (not 0-9 or not A-Z or not a-z) 
     // "/"(converted to 47) reads as (true)+(true)+(false) = false
     if ((v < 48 || v > 57) && (v < 65 || v > 90) && (v < 97 || v > 122))
     {
         e = 2;
     }
 }

2 个答案:

答案 0 :(得分:0)

在if条件中尝试此操作

if (!(v >= 48 && v <= 57) && !(v >= 65 && v <= 90) && !(v >= 97 && v <= 122))

答案 1 :(得分:0)

这可以用同样的方式工作,我觉得有点不那么混乱。

if( !((v >= 48 && v <= 57) || (v >= 65 && v <= 90) || (v >= 97 && v <= 122)))

然而,这也有效。

((v < 48 || v > 57) && (v < 65 || v > 90) && (v < 97 || v > 122))

顶部函数,使用|| (或)作为比较,倾向于真实:

(true) || (false) = (true);

但随着! (没有)补充说,结果是倒置的:

!((true) || (false)) = (false);

第二个功能,使用&amp;&amp; (和)作为比较,倾向于虚假:

(true) && (false) = (false);

@Jade感谢您帮助我理解它:)