关于判断char型变量c1是否为大写字母 'A'<=c1<='Z' 为什么我的编译运行正常?

使用的是VC

main(){

char c1;
if ( 'A'<=c1<='Z' )
{
printf("%s","---" ); //正常输出
}
if ( (c1>='A')&&(c1<='Z') )
{
printf("%s","+++" ); //这里反而没有输出
}
int b;
b=2;
if (1<b<3 )
{
printf("%s","sss" ); //正常输出
}
if ( b>=1 && b<=3 )
{
printf("%s","sss" ); //正常输出
}
}

if ( 'A'<=c1<='Z' )
if (1<b<3 )

这种数学上的用法在c语言里面是不支持的
它只能分段计算
'A'<=c1 的结果再与 <='Z'计算,前者计算的结果是一个bool值,只能是0或1,成立为1,否则为0
同理1<b的结果再与<3追问

问题是我这样写没有宝座 正常运行的。。所以我觉得蛮奇怪的。

追答

不会报错的,只是程序的逻辑是错的

它违背了你的初衷, 你想前面一半的计算结果就是个0或者1

0或者1肯定小于'Z'啊,这个就没有意义了

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网