CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

C语言里的Switch语句不能正确运行

楼主bgip(AsLinC++)2005-08-03 11:44:23 在 C/C++ / C语言 提问

公司项目里有一C语言的程序可以编译通过,但运行时有一switch语句却不能正确运行下去。例如:  
  int   i;  
  for(int   i   =   0;i   <   100;   i++)  
  {  
  switch(i)  
  case   0:  
  do   something;  
  break;  
  case   1:  
  do   something;  
  break;  
  case   2:  
  do   something;  
  break;  
  default:  
  break;  
  }  
  程序运行到switch的时候~以下的case都不运行了。  
  开发环境是red   hat   linux   7.2,   gcc好像是2.0 问题点数:100、回复次数:23Top

1 楼bgip(AsLinC++)回复于 2005-08-03 11:46:46 得分 0

gcc是2.96-98版本Top

2 楼newbiestar()回复于 2005-08-03 11:48:09 得分 5

switch(i)  
  {  
      case   0:  
  ...  
      default:  
  }Top

3 楼newbiestar()回复于 2005-08-03 11:50:01 得分 40

你用gcc   -S参数看看到底有没有产生正确的代码……Top

4 楼LoveYouJustOneDay(哈哈)回复于 2005-08-03 11:51:34 得分 5

switch(i)   {   //  
  case   0:  
  do   something;  
  break;  
  case   1:  
  do   something;  
  break;  
  case   2:  
  do   something;  
  break;  
  default:  
  break;  
  }   //Top

5 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 11:51:34 得分 20

for(int   i   =   0;i   <   100;   i++)  
   
   
   
  C   语言不支持这样定义   i  
   
  要么在程序开始的地方定义   i  
   
  要么在复合语句的开始的位置定义   i  
   
  (就是大括号以内的   第一个语句   定义)  
   
   
  不能在   其他的地方定义   任何变量Top

6 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 11:52:19 得分 0

for(int   i   =   0;i   <   100;   i++)  
   
   
   
  C   语言不支持这样定义   i  
   
  要么在程序开始的地方定义   i  
   
  要么在复合语句的开始的位置定义   i  
   
  (就是大括号以内的   第一个语句   定义)  
   
   
  不能在   其他的地方定义   任何变量Top

7 楼wh_xiexing(谢兴)回复于 2005-08-03 11:52:19 得分 5

switch(i)  
  {  
      case   0:  
  ...  
      default:  
  }  
   
  少了括号.Top

8 楼wh_xiexing(谢兴)回复于 2005-08-03 11:52:41 得分 5

switch(i)  
  {  
      case   0:  
  ...  
      default:  
  }  
   
  少了括号.Top

9 楼bgip(AsLinC++)回复于 2005-08-03 11:52:44 得分 0

to   newbiestar()不好意思~心急~{}漏打了Top

10 楼bgip(AsLinC++)回复于 2005-08-03 11:53:33 得分 0

括号是我漏打了~不关括号的事~~Top

11 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 11:54:28 得分 0

象你的程序  
   
   
  int   i;  
   
  for(int   i   =   0;i   <   100;   i++)  
   
  在   for   中就不要   int   i   了  
   
  for(i   =   0;i   <   100;   i++)       应该是可以的了   ..  
  Top

12 楼bgip(AsLinC++)回复于 2005-08-03 11:55:21 得分 0

to   jixingzhong(瞌睡虫):  
  我知道~只是举个例子而已~而且我已经说过能正确编译通过,是运行时的问题~~Top

13 楼liuhaimiao()回复于 2005-08-03 11:57:19 得分 5

for(i   =   0;i   <   100;   i++)Top

14 楼bgip(AsLinC++)回复于 2005-08-03 11:58:31 得分 0

int   i;  
  for(i   =   0;i   <   100;   i++)  
  {  
  switch(i)  
  case   0:  
  do   something;  
  break;  
  case   1:  
  do   something;  
  break;  
  case   2:  
  do   something;  
  break;  
  default:  
  break;  
  }    
  然后是到switch的时候就不运行了~Top

15 楼windking21(想玩玩WOW 真的那么难吗)回复于 2005-08-03 11:59:23 得分 5

void   main()  
  {  
      int   a;  
  for(int   i=0;i<100;i++)  
      {  
   
   
  switch(i)  
  {  
   
  case   0:  
   
  a=0;  
  break;  
   
   
   
  case   1:  
   
    a=1;  
  break;  
   
   
   
   
  case   2:  
   
  a=2;  
  break;  
   
   
   
  default:  
   
  break;  
      }  
   
   
  }  
  }  
   
  为了调式加了a的赋值语句Top

16 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 12:00:17 得分 5

那只能是程序中的   do   something;  
   
  部分有问题了  
   
   
  可以测试一下    
   
  for(i   =   0;i   <   100;   i++)  
  {  
  switch(i)  
  {case   0:  
  printf   ("%d\n",i);  
  break;  
  case   1:  
  printf   ("%d\n",i);  
  break;  
  case   2:  
  printf   ("%d\n",i);  
  break;  
  default:  
  break;  
  }  
  }  
   
  程序的输出是正常的   ...  
  Top

17 楼newbiestar()回复于 2005-08-03 12:01:09 得分 0

回复人:   jixingzhong(瞌睡虫)   (   )   信誉:100     2005-08-03   11:52:00     得分:   0      
     
     
        for(int   i   =   0;i   <   100;   i++)  
   
   
   
  C   语言不支持这样定义   i  
   
  要么在程序开始的地方定义   i  
   
  要么在复合语句的开始的位置定义   i  
   
  (就是大括号以内的   第一个语句   定义)  
   
   
  不能在   其他的地方定义   任何变量  
       
  =========================================  
  现行标准完全支持这样的风格的代码……Top

18 楼windking21(想玩玩WOW 真的那么难吗)回复于 2005-08-03 12:02:22 得分 0

楼主   照我那个试试看    
   
  我调式没问题Top

19 楼bgip(AsLinC++)回复于 2005-08-03 12:04:15 得分 0

to   jixingzhong(瞌睡虫):  
  嗯~我也这样做了~就是连输出信息也没有~给气死了~  
  to   newbiestar()   :  
  我用了gcc   -s,但好像没做什么~只是编译了一下……Top

20 楼bingbox_1984(苦丁茶)(我只喜欢CC)回复于 2005-08-03 12:09:11 得分 0

同意jixingzhong(瞌睡虫)Top

21 楼newbiestar()回复于 2005-08-03 12:19:38 得分 0

gcc   -S,要大写S……  
   
  产生一个.s的文件,你对着这个文件查找你的switch的代码……Top

22 楼Flood1984(峰子)回复于 2005-08-03 12:42:13 得分 5

do   something;  
  //这个do   something;到底做了些什么?  
  你说程序不能运行了,  
  是怎么个不能运行法?有什么提示?  
  说清楚一点,  
  光你贴的这一点是找不出问题的.Top

23 楼bgip(AsLinC++)回复于 2005-08-03 16:16:31 得分 0

to   newbiestar()    
  哦~原来这样用!  
   
  谢谢各位了~在调试过程中~发现在等于1的时候不会运行,其他数值可以顺利通过,不知为什么,于是把那个case   0x01:重新写过,就正常了。汗!  
   
  在此谢谢各位啦~结贴!Top

相关问题

  • PRO*C中运行一SQL语句,无任何反应?
  • c#语句?
  • 这个VB的Select Case用C#switch语句怎么写?
  • C++中,关于switch语句的一个问题
  • :) Asp.net/C#连接Access/MS SQL2000的全部实现语句,运行后立刻结帖.
  • 关于switch语句
  • switch语句问题
  • Asp.net/C#/Sql语句问题?
  • 一句vb语句转C#
  • VC中如何运行SQL语句?

关键词

  • 语句
  • c语言
  • switch语句
  • 不能正确运行
  • int i
  • 有一

得分解答快速导航

  • 帖主:bgip
  • newbiestar
  • newbiestar
  • LoveYouJustOneDay
  • jixingzhong
  • wh_xiexing
  • wh_xiexing
  • liuhaimiao
  • windking21
  • jixingzhong
  • Flood1984

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo