为什么INT(char)的比较不起作用



我正在尝试以以下方式检查整数是大写或小写或数字

if(int('A')<=int(M[i])<=int('Z')) cout<<"upper"<<endl;
if(int('a')<=int(M[i])<=int('z'))  cout<<lower"<<endl;
if (int('0')<=int(M[i])<=int('9')) cout<<"digit"<<endl;

,但所有if语句都返回任何字符,因此所有3个字符串均已为任何字符打印。为什么我无法比较此测试中的Chars转换INT?`

链比较不支持C

a <= b <= c

被解析为

(a <= b) <= c

即。您正在比较与c进行首次比较的结果,并且在您的情况下允许进行比较,因为比较的结果可以隐式转换为整数(因此隐藏了逻辑错误)。

用于范围检查的C 解决方案为

(a <= b) && (b <= c)

,但是当然,您要注意,如果b是具有副作用的表达式,可以对其进行两次评估,因此可能有必要将其值存储在变量中。

最新更新