switch嵌套语句与break、continue的代码例题。
通过以下程序可以帮助我们更好的理解switch语句的嵌套以及break和continue的作用。
#include <stdio.h>
int main() {
int x = 3;
int y = 3;
switch (x % 2) // x%2的结果为1,因此执行case1
{
case 1:
switch (y) // y=3,因此会执行case3,而case3不存在,那只能执行default
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("hello"); // 打印hello,内部switch结束,此时外部case1结束
} // 因为外部case1之后没有添加break语句,所以继续执行case2
case 2: // 打印third
printf("third"); // 外部switch结束
}
return 0;
}
因此该程序打印结果是“hellothird”
#include <stdio.h>
int main()
{
int a = 0, b = 0;
// for循环将a和b的初始值设为1
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 20) break;
if (b % 3 == 1)
{
b = b + 3;
continue;
}
b = b-5;
}
printf("%d\n", a);
return 0;
}
第一次循环:a = 1,b=1,b小于20,if条件不成立,b%3=1%3=1成立,b=b+3, 此时b的值为4
第一次循环:a = 2,b=4,b小于20,if不成立,b%3=4%3=1成立,b=b+3, 则b=7.
第一次循环:a = 3,b=7,b小于20,if不成立,b%3=7%3=1成立,b=b+3, 则b=10.
第一次循环:a = 4,b=10,b小于20,if不成立,b%3=10%3=1成立,b=b+3,则b=13.
第一次循环:a = 5,b=13,b小于20,if不成立,b%3=13%3=1成立,b=b+3, 则b=16.
第一次循环:a = 6,b=16—>b小于20,if不成立,b%3=16%3=1成立,b=b+3, 则b=19.
第一次循环:a = 7,b=19—>b小于20,if不成立,b%3=19%3=1成立,b=b+3, 则b=22.
第一次循环:a = 8,b=22,b大于20,if成立,循环break结束
- 因此最后打印结果是:8
i++与++i的区别
前置++:先使用变量中内容,再给结果加1
后置++:先使用变量中内容,整个表达式结束时,给变量加1
逗号运算符的作用
在含有逗号运算符的表达式中,最终值为最后一个逗号后面表达式的值。
运算符优先级
1、逗号运算符的优先级比赋值运算符=号的优先级低
2、++、+的优先级比+=高
3、多个+号在一起的时候,其优先级为后置++、+、前置++, 如:a+++c,可看作(a++)+c
例题理解
//打印出结果
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;//先加1,再赋值给a,a的值为6,再赋值给c为6
b = ++c, c++, ++a, a++;//c先加1,再赋值给b,b为7,c=7.
//c++使得c=8,++a使得a加1.所以a=7,a++使得a=8。
//此时a=8,b=7,c=8.
b += a++ + c;//a++后,a为9,,由于是后置a,所以a
//在该表达式中计算时a为8,因此表达式为b+=7+c+1=8+8=16.
//所以b=b+16=23,a=9;
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}
- 最终打印结果为:a=9 b=23 c=8
感谢阅读,希望能帮到大家!