#include "stdio.h"
void main()
{char a='z';
int c=5;
switch(a++)
{
case'z':c++;case'x':c+=20;break;case'y':c-=15;
}
printf("%d",c);
}
谁告诉为什么答案是等于26
详细点
#include "stdio.h"
void main()
{char a='z';
int c=5;
switch(a++)
{
case'z':c++;case'x':c+=20;break;case'y':c-=15;
}
printf("%d",c);
}
谁告诉为什么答案是等于26
详细点
这个问题有两个知识点
第一:a++的用法
在这个程序里swich(a++)改成swich(a)结果也不会变的,因为a++这个运算是先使用(术语叫返回)a之后再给他+1(就是进行++运算),在这里swich语句所接受到的值是'z'
第二:swich()语句的用法
swich语句执行规则是:首先从上到下搜索每一条条件(就是每一个case),一旦发现有满足它所接受到的值(在你的程序里就是a所返回的值),它就停止搜索,从那一条条件开始往下运行(注意,一旦停止了之后是不会在去管满不满足条件),如果没有break这个语句的话它会执行到最后,在你的程序里
1)case'z':c++;
2)case'x':c+=20;break;
3)case'y':c-=15;
可以看到第一个case就满足了条件,所以第一行被运行并c这个变量增加了1,因此c的值变成6
然后程序接着运行下一条(因为上一条条件被满足了,所以停止了搜索,因此这一次是不管case满不满足条件都会继续执行)c+=20(这个语句等于c=c+20),结果c变量的值变成26,然而在这里我们的程序遇到了break语句所以swich语句结束不会在往下运行,跳出swich语句,所以c变量的值是26