char c='a' 0<=c<='9'是为什么

怎么会

常见ASCII码的大小规则
1)数字0~9比字母要小。如"7"<"F";   
2)数字0比数字9要小,并按0到9顺序递增。如"3"<"8"
3)字母A比字母Z要小,并按A到Z顺序递增。如"A"<"Z"
4)同个字母的大写字母比小写字母要小32。如"A"<"a"。 追问
这个程序是这样的
void main()
{ char c=‘a';
if('0'<=c<=’9‘) printf("YES");
else printf("NO");
}
运行结果为什么是yes
追答
if('0'<=c && c<='9') printf("YES"); else printf("NO");

mjonir 说的对,是从左向右依次计算的。不过 ('0'<=c )= true(1). 然后(1<=’9‘)= true(1).
改成这样试试:
if('0'<=c && c<='9')
逻辑运算符不是一点用都没有的哦~~
没人说过你原来那个写法可以,因为连续的不等式是c和c++不支持的 会歧义 当然得不到想要的结果。 追问
这一道选择题啊,难道题出错了?
追答
理论是不能连等的   但是不是选不出正确答案的   理解方法很简单   首先在未改动的情况下
我的编译器显示的是(codeblocks)warning:comparisons like‘X<=Y<=Z’ do not have their mathematical meaning 也就是说不再具有原来的数学含义 那么我们也就可以这么理解if(('0'<= c) <='9') 人为地加一个括号 其实计算机也是这么操作的 先判断前面的('0'<= c) 结果是false(0),再算后面的
相当于:
if(false <='9') printf("YES");
else printf("NO"); 不过还是不严谨,比如用java时逻辑值(true,false)是不能与算术值进行运算的。c/c++可以。
怎么会

常见ASCII码的大小规则
1)数字0~9比字母要小。如"7"<"F";   
2)数字0比数字9要小,并按0到9顺序递增。如"3"<"8"
3)字母A比字母Z要小,并按A到Z顺序递增。如"A"<"Z"
4)同个字母的大写字母比小写字母要小32。如"A"<"a"。 追问
这个程序是这样的
void main()
{ char c=‘a';
if('0'<=c<=’9‘) printf("YES");
else printf("NO");
}
运行结果为什么是yes
追答
if('0'<=c && c<='9') printf("YES"); else printf("NO");

mjonir 说的对,是从左向右依次计算的。不过 ('0'<=c )= true(1). 然后(1<=’9‘)= true(1).
改成这样试试:
if('0'<=c && c<='9')
逻辑运算符不是一点用都没有的哦~~
没人说过你原来那个写法可以,因为连续的不等式是c和c++不支持的 会歧义 当然得不到想要的结果。 追问
这一道选择题啊,难道题出错了?
追答
理论是不能连等的   但是不是选不出正确答案的   理解方法很简单   首先在未改动的情况下
我的编译器显示的是(codeblocks)warning:comparisons like‘X<=Y<=Z’ do not have their mathematical meaning 也就是说不再具有原来的数学含义 那么我们也就可以这么理解if(('0'<= c) <='9') 人为地加一个括号 其实计算机也是这么操作的 先判断前面的('0'<= c) 结果是false(0),再算后面的
相当于:
if(false <='9') printf("YES");
else printf("NO"); 不过还是不严谨,比如用java时逻辑值(true,false)是不能与算术值进行运算的。c/c++可以。
http://zhidao.baidu.com/question/432767818.html