jtahstu的博客

Git仓库   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> C语言辅导 - a>b>c与a=b=c的区别 and something else

C语言辅导 - a>b>c与a=b=c的区别 and something else

    这段时间一直在给豪神妹妹辅导C语言,从最简单的什么是C语言讲起,到现在讲到了选择判断条件,一星期有余,今天在讲解题目的时候,发现了一些我们经常忽视的问题,今天简单总结一下。

1.判断char型变量ch是否为小写字母的正确表达式是______。
A.'a'<=ch<='z'                         B.(ch>='a') & (ch<='z')   
C.(ch>='a') && (ch<='z')               D.('a'<=ch) AND ('z'>=ch)

思考1s钟,选C

分析:看这样一到题,有编程经验的同学都知道应该选C,很明显,C选项确实是正确的。

那么为什么A选项是错误的呢,一开始我也认为A肯定是不对的啊,但是通过写代码本发现貌似也是可以判断的啊,看图


貌似是可以判断的,其实不然

2.下列程序的输出结果是_______。
   main()
  {  int  a=5,b=4,c=3,d=2;
     if(a>b>c)  printf("%d\n",d);
     else if((c-1>=d)==1)  printf("%d\n",d+1);
     else  printf("%d\n",d+2); }

A.2             B.3         C.4             D.编译时有错且无结果

同样的,这个也是同样的道理 。选B


所以对于一个连续的判断语句,如a>b>c,先判断a>b,结果为逻辑值1或0,然后1或0再去与c作比较

那么第1题里,无论ch是什么字符,都会判断为真

第2题,a>b成立,结果为1,然后1与c比较,结果为0

3.以下程序执行后的输出结果是_______。

#inlude <stdio.h>
main()
{ int a=5,b=4,c=3,d=1; 
d=(a>b>c); //a>b 为真,判断结果为1, 1再和c比较1>c,为假。表达式值为0.
printf("%d\n",d);  }
A.3            B.	2            C.1            D.0

二、a=b=c,先把c赋值为b,b再赋值给a,即从右向左赋值

三、逗号表达式,从左向右执行,表达式结果为最后一条语句执行的结果,前面做的事情可能会影响最后一句的结果,但是最后看的还是最后一句


豪神一开始认为连续判断语句,是先判断最后两个值,然后就不管前一个了,我不是黑他[认真脸]。

所以到目前我们所学的知识来看,只在连续赋值时才是从右向左的。


---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

62 + 32 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交
正在加载中……