我试图通过以下方式检查整数是大写还是小写还是数字
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语句都返回true,因此所有3个字符串都是为任何字符打印的。为什么我无法比较此测试中转换的int与chars? `
答案 0 :(得分:2)
C ++不支持链式比较
a <= b <= c
被解析为
(a <= b) <= c
即。你将第一次比较的结果与c
进行比较,这是允许的,因为比较的结果可以隐式转换为整数(从而隐藏逻辑错误)。
用于范围检查的C ++解决方案是
(a <= b) && (b <= c)
但当然你要注意,如果b
是一个带有副作用的表达式,它可以被评估两次,因此可能需要将其值存储在变量中以使用此表单。