前言:
`关于C语言分支于循环是比较简单,却有一些小细节,下面我们通过几道题目来进行探索
细节一:if与else匹配的细节
我们都知道知道if与else进行匹配,但是里面有个小点,希望各位注意:(请看代码)
题目:请看题目说出输出的结果:
#include<stdio.h> int main() { int a = 0; int b = 2; if (a == 1) printf("要选我吗?\n"); if (b == 2) printf("真的要打印我呀\n"); else printf("打印我打印我!!!\n"); return 0; }
细节二:多个关系运算符连续使用
问题:请看代码说出输出结果:
#include<stdio.h> int main() { int a = 0; int b = 100; int c = 3; if (a < b < c) printf("选我!!!\n"); else printf("可能是我哦\n"); return 0; }
细节三:逻辑运算符中的短路现象
题目:请看代码计算出输出结果:
#include<stdio.h> int main() { int i = 0; int a = 0; int b = 0; int c = 0; int d = 0; i = a++ && ++b && d++; printf("a = %d b = %d c = %d d = %d\n", a, b, c, d); printf("i = %d\n", i); return 0; }
答案:
答案1:真的要打印我呀
答案2:选我!!!
答案3:a = 1 b = 0 c = 0 d = 0 i = 0
总结
- 问题一总结:else与最近的if匹配;
- 问题二总结:逻辑运算操作符的逻辑是真返回1,假返回0;
逻辑运算符在本题目中的运算逻辑是,a<b,是真,返回1,1<c,所以打印“选我!!!”; - 问题三总结:与运算符一个为假也就是0,那么后面不再进行计算;
在本题中a为后置++,先使用后加加,先使用0,i接收到0后判断认为是假,对后面的与操作数字不进行计算,直接掠过。
欢迎指正,建议,评论,谢谢!