一、短路
短路 常见于逻辑操作符中。比如 逻辑与 &&
和 逻辑或 ||
。
对于 逻辑与 &&
来说,只要遇到表达式为假,整个表达式都为假,即后面的表达式不需要计算。
对于 逻辑或 ||
来说,只要遇到表达式为真,整个表达式都是真,即后面的表达式不需要计算。
下面我们看两道例题。
例1:下面程序输出的结果是什么
#include <stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
分析: 我们先来看这一部分 a++ && ++b && d++
,a++
是先看 a
的值,再 a+1
,所以第一个表达式的结果为 0 ,即 为假 ,故后面两个表达式都不需要计算。所以,a=1, b=2 , c=3 , d=4 。
例2:下面程序输出的结果是什么
#include <stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ || ++b || d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
分析: a++
为假,继续看下一个表达式,++b
为真,故这道题只计算前两个表达式。所以,a=1, b=3, c=3, d=4
二、switch语句的注意点
switch
后的表达式必须是 整型表达式case
后的值必须是 整型常量表达式- 注意
break
语句的使用,来实现分支效果
三、do while语句的使用场景
do while
语句是先执行一次语句,然后再进入循环体,也就是说 do while语句的表达式至少执行一次 ,所以通常用这个语句来判断数字的位数。
例如:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}
之所以用do while语句,是因为 0 也是一位数,所以要从 1 开始记位数。
四、break和continue语句
break
语句是 永久地终止循环 ,即直接跳出循环,继续往下执行。
continue
语句是跳过本次循环中 continue
后面的语句。