Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说C 语言三元运算符原来也是可以嵌套的,希望能够帮助你!!!。
事实证明,编程这玩意如果只是干看干学,所获得的知识只能说非常的单薄,只有真正使用起来,多练习,多敲代码,知识才会牢固,而且还能温故知新,从旧的知识里面扩展出新的知识。
最近在做 C 语言基础练习题目,其中有这么一道题。
题目:从键盘输入一个正整数 a,判断 a 如果大于等于 90,结果输出字符 A;如果小于 90 但大于等于 60,结果输出字符 B;小于 60,则结果输出字符 C。
看到这道题目,我的头脑中立即敲定,太简单了,这不随便做吗!用 if-else 结构或者 switch 结构都是可以的。
但是看到题目的限制:使用三元运算符来实现……
登时,脑子就宕机了!
之前在学习 C 语言判断结构中有介绍到三元运算符,里面提到三元运算符的结果只能是两个。
int n = (expression ? result1 : result2);
问号前面的判断表达式如果成立,则将冒号左边的结果赋值给变量 n,反之不成立,就将冒号右边的结果赋值给变量 n。
往往复复,怎么看三元运算符都只能表现出两个结果,但题目却要输出三个结果,你这不是在为难XXX吗?
记得某位先贤说过,不懂咱就看一眼,理解了就是咱脑子里的知识了。但是如果不懂,你还要在那里死愣琢磨,挠破脑袋都想不出来,这不是既浪费时间,浪费时间就是在浪费生命。
谨记先贤的话,咱就偷偷瞄一眼别人是怎么做的……
#include<stdio.h>
int main(){
int a;
printf("请任意输入你的成绩分数:");
scanf("%d", &a);
int c = (a > 90 ? 'A' : (a >= 60 ? 'B' : 'C'));
printf("对应的成绩等级为:%c", c);
return 0;
}
原来如此,三元运算符也可以像 if-else 结构和 switch 结构一样,拿来套娃嵌套的呀。
一番头脑风暴之下,原来是我之前把三元运算符理解得太死板了。关于嵌套的介绍,也是直接省略了三元运算符。
比如第一元的判断表达式,这里可以是一个变量、可以是表达式、也可以是具体的某一个值。
不过建议是不要用具体有某个值的变量,或者具体的一个值放在这个地方。因为没有意义。如果是 0 、空字符 \0 等表示 0 的值,结果就一定是右边的结果,反之其他任何数,结果就一定是左边的值。
这样写,还不如直接赋值。
同样的其他两元,也是可以用变量、具体的某个值或者表达式来放置。
而一整个三元运算符也是一个表达式,自然就可以放进去了。
就拿上面的例题来看一下。
如果输入的值满足了 a>=90 这个条件,结果是将字符 A 赋值给变量 c。如果不满足,那么就是将冒号右边的表达式赋值给变量 c,然后在进行一次三元运算符的判断。
这样就可以用三元运算符实现多个结果的可能。
那么,就是说三元运算符只能表示两个结果的说法是不成立的吗?
emmm,只能说是不严谨。准确来说,一个三元运算符只能表示两个结果,嵌套的三元运算符就另当别论了。
具体拆开来看,外层的三元运算符的结果有两个,字符 A 和三元运算符的表达式。嵌套的三元运算符也只有两个结果,字符 B 和字符 C。
来一个有意思的问题,嵌套一个三元运算符,可以有三个结果。那么嵌套了 n 个三元运算符,可以有几个结果呢?
没有嵌套的三元运算符对应 2 个结果;嵌套 1 个,对应是 3 个结果;嵌套 2 个,对应的是 4 个结果……
找出规律,嵌套 n 个三元运算符,自然就有 n+2 个结果。
以上就是本篇文章的全部内容,欢迎大家对文章进行点评,在评论区提出你的看法。
如果您觉得文章还不错的话,动动大拇哥,点个赞,支持一下!要是觉得有用,分享收藏也是可以的嘞!
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章