鱼C论坛

 找回密码
 立即注册
查看: 1672|回复: 6

很是疑惑C中的 && 还有这鬼现象WTF??

[复制链接]
发表于 2016-12-6 14:06:25 | 显示全部楼层 |阅读模式
20鱼币
  1. ude <stdio.h>

  2. int main()
  3. {
  4.         char key;

  5.         printf("请输入一个字符:");
  6.         scanf("%c",&key);
  7.                                                                         //                        这个是板块练习题里面的转换字符大小写的小玩意,但是,发现了让人郁闷的事情
  8.         if('A'<= key && key  <= 'Z')    //这里这里,很是疑惑的 现在用&&是正常转换字符大小写的呢,现在还是正常的代码 请往下面看
  9.         {
  10.                 key+=32;
  11.         }
  12.         else if('a' <= key && key <= 'z')
  13.         {
  14.                 key-=32;
  15.         }

  16.         printf("您输入的字符经过转换后输出为:%c\n",key);

  17.         return 0;
  18. }
复制代码





  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char key;

  5.         printf("请输入一个字符:");
  6.         scanf("%c",&key);

  7.         if('A'<= key <= 'Z')    //之前玩过会JAVA 所以习惯性地。。结果。。看图片吧 诶 几个小时也没调试出来到底什么原因
  8.         {
  9.                 key+=32;
  10.         }
  11.         else if('a' <= key && key <= 'z')
  12.         {
  13.                 key-=32;
  14.         }

  15.         printf("您输入的字符经过转换后输出为:%c\n",key);

  16.         return 0;
  17. }
复制代码
2012.6.14.08.png

最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-6 14:06:26 | 显示全部楼层
石头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");
        }

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
石头3494 + 5 + 5 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-6 14:09:40 | 显示全部楼层
&&这个符号的意思不是   '与'  的意思吗,虽然是有短路的原理,直接用
'A' <= key <= 'Z'   替换 'A' <= key && key <= 'Z' 就发生了问题了,小弟实在搞不懂,大神在哪里呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-6 14:17:03 | 显示全部楼层
C语言里没有连续不等式

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
石头3494 + 5 + 5 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-6 14:54:08 From FishC Mobile | 显示全部楼层
fengzhizijia 发表于 2016-12-6 14:17
C语言里没有连续不等式

请问下那这个连续不等式会等价于什么呢可以告知下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-6 16:04:51 | 显示全部楼层

谢谢了~~    话说等号的问题基本不会发生啦 以前玩JAVA的时候就被坑惨了  无力吐槽 C语言这么多坑等人跳的啊  苦逼逼的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-9 02:37:06 | 显示全部楼层
四楼赛高,c里没有连续不等式
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表