当前位置:编程学习 > VC++ >>

一道VC++程序题,求详细的解释

以下程序输出的第一行至第二行分别是   和    。

#include <iostream.h>

void main(void)

{

  int i(1),j(2),m(0),n(1);

  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'<<n<<endl;

}

求详细解释

答案:
#include <iostream.h> //基本输入出流
void main() //void 去了 ,可以不用。 主函数 返回为空。
{
  int i(1),j(2),m(0),n(1); //定义 4个int 型局部变量 ,并初始化。
  switch(++i)            //switch (++i) 开关语句 。把 ++i 的值 加1。 
  {
  case 1: m++;n++;    
  case 2: switch(j++){ // 因为定义是 i = 1,然后又++i .所以此时 跳到 2.  (j++) 把 先把j 的值传入参数 ,J 在 -1 .j = 1
          case 1:m++; 
          case 2:n++;//在这停。n++, n = 2
          }
  case 3:m++;n++;break//上一句没break   到这。在跳出。
  case 4:m++;n++;
  }
  cout<<m<<'\n'<<n<<endl; // 直接到这 m = 1 n = 3
}

++i,i=2执行case2中的switch:

j=2,n++,n=2

case 2后面没有break,执行case 3

m++,n++,m=1,n=3

break;结束循环,输出 1 3

程序中的变量都没有初值,所以,内存的内容是不确定的,这个程序有错误的。

上一个:一道VC++选择题,请详细解释每个选项
下一个:为什么在我的vc++里不能新建C++文件

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,