在switch语句中,如果找到了满足的case情况,是不是就不再看之后的case而直接执行其所属的语句啊,直到遇到break或者switch结束?没理解错吧?
#include <stdio.h>
int main()
{
int i = 2;
int j;
printf("请输入j的值:\n");
scanf("%d", &j);
switch (j)
{
case 1:
printf("%d\n", i);
case 'T':
printf("%d\n", i + 1);
j++;
break;
printf("这个语句不再执行!~\n");
case 2:
printf("%d\n", i + 2);
case '3':
printf("%d\n", 2 * j + 3);
default:
i--;
printf("今天是周日!\n");
case 5:
printf("%d", i + 4);
break;
case '6':
printf("%d", i + i);
}
/*
1>在switch语句中,若case后面没有加break语句,则会从允许进行的语句开始,不再判断情况而直接执行后面的语句,
直到执行到break语句(包含default语句中的break)或者执行完所有语句后跳出switch。
2>所有语句只会执行一次,而不会因为default语句没有加break而继续执行default语句直到满足后面情况。
*/
int c = 0, k;
for (k = 1; k < 3; k++)
switch (k)
{
default:
c += k;
case 3:
c++;
break;
case 4:
c += 2;
break;
}
/*
c = 0;
k = 1, c = 1,执行case 3, c = 2;
k = 2, c = 4,执行case 3, c = 5;
*/
printf("%d", c);
return 0;
}