永发信息网

C语言switch问题

答案:5  悬赏:30  手机版
解决时间 2021-08-12 01:47
  • 提问者网友:玫瑰园
  • 2021-08-11 06:05

#include "stdio.h"
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: switch(y)
  {
         case 0:a++;break;
         case 1:b++;break;
        
  }
case 2:a++;b++;break;
case 3:a++;b++;break;
default:printf("Grammar error !\n");
}
printf("\na=%d,b=%5d\n",a,b);
}

 

这个语句比较简单,我想问:1 :最后输出的结果是什么? 2:我是用VC6.0创建的c++   编译的时候总提示错误“one  multiply defined symbols found ‘ 问题到底出在哪?

最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-08-11 07:02

最后输出结果,a=2,b=1    one  multiply defined symbols found 说明你的VC6.0安装有问题,不信你打个非常简单自己确定没有错误的程序,它可能还是会报错,你我在我的电脑上就直接能运行,把你的VC6.0卸载了,重新安装,要不只能重新下一个……


#include "stdio.h"
main()
{
int x=1,y=0,a=0,b=0;
switch(x)   x=1运行case1
{
case 1: switch(y)   y=0运行case0
  {
    case 0:a++;break;   遇到break,跳出switch(y)
    case 1:b++;break;
    
  }
case 2:a++;b++;break;跳到这里,遇到break,跳出~
case 3:a++;b++;break;
default:printf("Grammar error !\n");
}
printf("\na=%d,b=%5d\n",a,b);
}

全部回答
  • 1楼网友:廢物販賣機
  • 2021-08-11 10:35
switch语句当情况没有办法区分时,不支持嵌套。你这里使用了嵌套
  • 2楼网友:行路难
  • 2021-08-11 09:03

a=1    b=0

打开vc 新建 工程 选win32 Application 加入文件名 默认项 完成 新建 C++ Source File源文件 输入文件名 完成 粘贴你的代码 插入下面一行 wndclass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); 看看能不能编译通过 运行出来了

  • 3楼网友:杯酒困英雄
  • 2021-08-11 08:34

#include <stdio.h>

int main() {  int x=1,y=0,a=0,b=0;  switch(x)  {  case 1:   switch(y)    {    case 0:     a++;     break;     case 1:     b++;     break;    }   //break;//不加个break还会往下执行分支的哦  case 2:   a++;   b++;   break;  case 3:   a++;   b++;   break;  default:   printf("Grammar error !\n");  }  printf("\na=%d,b=%d\n",a,b);  return 0; }//VC6.0编译通过

  • 4楼网友:爱难随人意
  • 2021-08-11 07:43
结果应该是a=2,b=1,因为你在switch(x)里,case 1中只是对switch(y)的break,而没有对x执行break,所以会执行case 2的a++和b++再break,所以a=2,b=1。。。至于编译,看不出有什么问题啊,你的工程没建错吧?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯