很是疑惑C中的 && 还有这鬼现象WTF??
ude <stdio.h>int main()
{
char key;
printf("请输入一个字符:");
scanf("%c",&key);
// 这个是板块练习题里面的转换字符大小写的小玩意,但是,发现了让人郁闷的事情
if('A'<= key && key<= 'Z') //这里这里,很是疑惑的 现在用&&是正常转换字符大小写的呢,现在还是正常的代码 请往下面看
{
key+=32;
}
else if('a' <= key && key <= 'z')
{
key-=32;
}
printf("您输入的字符经过转换后输出为:%c\n",key);
return 0;
}
#include <stdio.h>
int main()
{
char key;
printf("请输入一个字符:");
scanf("%c",&key);
if('A'<= key <= 'Z') //之前玩过会JAVA 所以习惯性地。。结果。。看图片吧 诶 几个小时也没调试出来到底什么原因
{
key+=32;
}
else if('a' <= key && key <= 'z')
{
key-=32;
}
printf("您输入的字符经过转换后输出为:%c\n",key);
return 0;
}
石头3494 发表于 2016-12-6 14:54
请问下那这个连续不等式会等价于什么呢可以告知下吗
'A' <= key <= 'Z' 等价于('A' <= key)<='Z',也就是先比较左一左二,比对后的结果再跟右一比。
左一左二比对结果不是true(1)就是false(0),不管是1或0,跟'Z'比一定是小于,所以原式恒成立。
C语言有很多陷阱,下面再举一"恒为true"的例子给楼主玩玩:
if (key = 'z')
{
printf("true");
}
else
{
printf("false");
} &&这个符号的意思不是 '与'的意思吗,虽然是有短路的原理,直接用
'A' <= key <= 'Z' 替换 'A' <= key && key <= 'Z' 就发生了问题了,小弟实在搞不懂,大神在哪里呀{:10_266:} C语言里没有连续不等式 fengzhizijia 发表于 2016-12-6 14:17
C语言里没有连续不等式
请问下那这个连续不等式会等价于什么呢可以告知下吗 呆鸭 发表于 2016-12-6 15:46
'A'
谢谢了~~ 话说等号的问题基本不会发生啦 以前玩JAVA的时候就被坑惨了无力吐槽 C语言这么多坑等人跳的啊苦逼逼的{:10_266:} 四楼赛高,c里没有连续不等式
页:
[1]