C++初级问题,我又来了,麻烦来看看,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:23:08
有3道类似的题目,求b的值?(答案依次为3,0,-1)请问区别是什么,具体怎么做?把我弄糊涂了。(请尽量具体的讲,谢谢。)
题目1:
char a=“A”;int b=0;
switch(a++)
{
case'A':b--;
case'B':b++;
case'C':b+=3;
}
题目2:
char a=“A”;int b=0;
switch(a++)
{
case'A':b--;
case'B':b++;break;
case'C':b+=3;
}
题目3:
char a=“A”;int b=0;
switch(a++)
{
case'A':b--;break;
case'B':b++;
case'C':b+=3;
}
我的理解:题目1,首先我不知道是不是swich(a),a再加1?还是相当于swich(a+1)?似乎按照前种猜测算出的答案才是正确的。题目2,.............哇 似乎1,2,3按照我现在的想法后算出来的都对啊!是不是 ???
【唯利是图】:以问题1为例,是不是swich这里也相当于一个循环?首先是swich(a),到case‘a’,于是b等于-1了,返回原来的swich括号内,这时候a+1,继续望下做,是case‘b’,于是b为-1+1==0,继续返回swich括号内?,于是最初的a变为c,case‘c’,b就成为0+3==3了?请问是这个过程吗??谢谢

1、字符串其实就是ASCII,a='A',那么a++就等于'B'
2、case后面的语句如果没有break就会一直向下执行直到遇到break或者switch终止
3、上面的char a="A",应该为单引号,要不也不会通过编译的

调试记录:
在switch后面的第一个"{"时,a='A'
在case 'A'语句的后面,a='B'
看来a++是在执行完第一个case标号之后才进行递增的

如果改为switch(++a),输出结果为4(第一道题),因为++a是提前递增,在switch语句中就进行递增,而a++是在case后进行递增的

看了,走了