回 帖 发 新 帖 刷新版面

主题:请高手帮我分析一下我遇到的疑难问题?

题目是:分样下列程序的输出结果:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  int i(1),j(0),m(1),n(2);
  switch(i++)
  {
    case 1:m++;n++;
    case 2:switch(++j)
           {
            case 1:m++;
            case 2:n++;
           }
    case 3:m++;
           n++;
           break;
    case 4:m++;
           n++;
  }
  cout<<m<<','<<n<<endl;
  system("PAUSE");
}
系统运行结果是:4, 5
我要问的疑问就是:switch(i++)中的i++的值倒底是1,还是2,而我按照前面所学的知识,我认为i++的值是1,而只有i变量本身的值才等于2,并且按书上所说,这里算的又应该是switch后面括号内的表达试的值,那这样我认为在这里就应该不是变量i的值啦。那这样子就应该执行 case 1语句啦,最后的值应该是2,3而不是系统运行的结果4, 5啦
    请高手帮我分析一下,我的问题出在哪里??

回复列表 (共2个回复)

沙发

先执行case 1
然后执行case 2的case1和case2
再执行case3
结果是:4, 5

只要没有break,就按顺序执行各个case!

板凳

谢谢啦 嘻嘻

我来回复

您尚未登录,请登录后再回复。点此登录或注册