为什么if判断不成立还执行里面的语句!!!!
#include<stdio.h>void main()
{
char a;
printf("êäèë£o");
scanf("%c",&a); //假如我输入a这个字符a = 97 的。
if(87 <= a <= 90 )//这里居然判断是对的并且执行了米面的语句a = a - 22.
{
a = a-22;
}
else if(119 <= a <= 122)//这里也判断正确。执行语句
{
a = a-22;
}
else if(65 <= a <= 86)//这里还是正确,执行语句
{
a = a+4;
}
else if(97 <= a <= 118) // 本来该只执行这个语句的;
{
a = a+4;
}
printf("%c",a);
}
这是怎么回事,我哪里编错了,朋友们帮帮我吧
风之残月 发表于 2014-11-27 11:32
"87
因为87 <= a <= 90这个语句是先执行a<=90这个,然后以它的结果1或者0再与87进行<=运算的,后面的也一样,解决办法就是用&&运算符 本帖最后由 小时光 于 2014-11-26 23:41 编辑
你的判断条件改为a >=87 && a<=90呢? 呵呵! 这种情况的话,如果实在看不出来的话,就单步调试吧!一步一步走,就知道是什么问题了!{:5_109:} "87 <= a <= 90",C语言里好像不能这么判断吧,改为"87 <= a && a <= 90",其它一样改 1. <= 运算符的结合性是从左到右, (87 <= a <= 90) 等价于:((87 <= a) <= 90)
你输入的是a:97
(87<= a ) 运算的结果是1 (true)
然后:
(1 <= 90 ) 运算的结果也是1 (true)
所以就执行第一个分支了。
哦 小写a要变成小写e就对咯!我是输入的字母都加4 为什么我用87〈=a&&a<=90中间用&&判断还是每个都执行呢? 小鸵鸟 发表于 2014-11-26 21:43
因为87
不运算符好意思,<=运算符是从左向右的,之前的说错了,,尴尬 转转,拿鱼币
页:
[1]