求助关于switch case 的问题

90Runner 2012-11-20 05:16:17
case 1:
其中我定义了一个int型的变量1,用其计数;
case 2:
定义了另一个int型变量2,也用其计数;
我如何才能在case 2语句中进行变量1与变量2的比较?
if(变量1>变量2)
{
.............
}
在case 2 语句中变量1是没有值的 请问如何才能实现两个变量的对比啊???
...全文
196 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
90Runner 2012-11-21
  • 打赏
  • 举报
回复
我定义成全局的 可以了,看来最开始是我想的太天真了 哈哈 谢谢各位了!
yang7531388 2012-11-20
  • 打赏
  • 举报
回复
引用 12 楼 Paddy90 的回复:
void CXmDlg::OnTimer(UINT nIDEvent) { int num=0; int num1=0; switch(nIDEvent) { case 1: { ... num = myList.GetCount(); ……
你是一直在这个函数里面循环吗,如果是在函数里面没跳出去是肯定可以比较的,如果这个函数出去了,你再进来nIDEvent肯定不同进去的case也不同,如果跳出函数了想比较两个数的话应该在函数外定义这两个变量,或者就在这个函数里面做循环也是可以的
Zoelov 2012-11-20
  • 打赏
  • 举报
回复
我觉得定义一个两个全局变量就可以了啊
转角天边 2012-11-20
  • 打赏
  • 举报
回复
引用 12 楼 Paddy90 的回复:
void CXmDlg::OnTimer(UINT nIDEvent) { int num=0; int num1=0; switch(nIDEvent) { case 1: { ... num = myList.GetCount(); ……
你这样子定义,每次OnTimer函数运行的时候num和num1都初始化为0了,将它们定义成静态变量试试
90Runner 2012-11-20
  • 打赏
  • 举报
回复
void CXmDlg::OnTimer(UINT nIDEvent) { int num=0; int num1=0; switch(nIDEvent) { case 1: { ... num = myList.GetCount(); ... break; } case 2: { .... num1 = myList1.GetCount(); .... if(num>num1) { } break; } } 简略的代码就是这样的 期间我就是把一些数存入链表,并统计出个数,然后对num 与num1 进行比较!不知这样可行不?
AnYidan 2012-11-20
  • 打赏
  • 举报
回复
引用 3 楼 Paddy90 的回复:
你的意思是定义成全局的吗? 刚才我打错了 我是在switch case语句外定义的变量int a=0,b=0 case 1: .... a++ .... case 2: ... b++ ... if(a>b) { .... }
语法没问题!!!
AnYidan 2012-11-20
  • 打赏
  • 举报
回复
语法不支持!!!
newtee 2012-11-20
  • 打赏
  • 举报
回复
贴下代码不行吗?
newtee 2012-11-20
  • 打赏
  • 举报
回复
a,b都赋初值0
乐CC 2012-11-20
  • 打赏
  • 举报
回复
引用 6 楼 Paddy90 的回复:
我想在case 2:的语句中判断 但是在case 2:中a 是没值的,所以我想问如何才能比较成功
如果定义在switch外都搞不定,我很怀疑你是否有写错。
90Runner 2012-11-20
  • 打赏
  • 举报
回复
我想在case 2:的语句中判断 但是在case 2:中a 是没值的,所以我想问如何才能比较成功
newtee 2012-11-20
  • 打赏
  • 举报
回复
有吗? break; for循环呢 问题很抽象 跟着逻辑来
newtee 2012-11-20
  • 打赏
  • 举报
回复
你想实现什么功能呢? 判断a,b大小想在哪里判断
90Runner 2012-11-20
  • 打赏
  • 举报
回复
你的意思是定义成全局的吗? 刚才我打错了 我是在switch case语句外定义的变量int a=0,b=0 case 1: .... a++ .... case 2: ... b++ ... if(a>b) { .... }
newtee 2012-11-20
  • 打赏
  • 举报
回复
请问这是C语言吗? C的语法貌似不可以这样 定义在switch外面就行了
转角天边 2012-11-20
  • 打赏
  • 举报
回复
引用 楼主 Paddy90 的回复:
case 1: 其中我定义了一个int型的变量1,用其计数; case 2: 定义了另一个int型变量2,也用其计数; 我如何才能在case 2语句中进行变量1与变量2的比较? if(变量1>变量2) { ............. ……
把这两个变量定义到switch语句的外面不行吗
按下矩阵按键在数码管上逐个显示对应的键值,键值如下: S1-S4:0-3 S4-S8:4-7 S9-S12:8-B S13-S16:C-F */ #include #define GPIO_DIG P0 #define GPIO_KEY P1 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[17]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char KeyValue; //用来存放读取到的键值 unsigned char KeyState; //记录按键的状态,0没有,1有 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 void Delay10ms(); //延时10ms void KeyDown(); //检测按键函数 void DigDisplay(); //动态显示函数 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { KeyState=0; while(1) { KeyDown(); if(KeyState==1) { DisplayData[7]=DisplayData[6]; DisplayData[6]=DisplayData[5]; DisplayData[5]=DisplayData[4]; DisplayData[4]=DisplayData[3]; DisplayData[3]=DisplayData[2]; DisplayData[2]=DisplayData[1]; DisplayData[1]=DisplayData[0]; DisplayData[0]=DIG_CODE[KeyValue]; KeyState=0; } DigDisplay(); } } /******************************************************************************* * 函 数 名 : DigDisplay * 函数功能 : 使用数码管显示 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void DigDisplay() { unsigned char i; unsigned int j; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//显示第7位 } GPIO_DIG=DisplayData[i];//发送段码 j=10; //扫描间隔时间设定 while(j--); GPIO_DIG=0x00;//消隐 } } /******************************************************************************* * 函 数 名 : KeyDown * 函数功能 : 检测有按键按下并读取键值 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void KeyDown(void) { unsigned int a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f) { Delay10ms(); a++; a=0; if(GPIO_KEY!=0x0f) { KeyState=1;//有按键按下 //测试列 GPIO_KEY=0X0F; // Delay10ms(); switch(GPIO_KEY) { case(0X07): KeyValue=0;break; case(0X0b): KeyValue=1;break; case(0X0d): KeyValue=2;break; case(0X0e): KeyValue=3;break; // default: KeyValue=17; //检测出错回复17意思是把数码管全灭掉。 } //测试行 GPIO_KEY=0XF0; Delay10ms(); switch(GPIO_KEY) { case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0): KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break; // default: KeyValue=17; } while((a<500)&&(GPIO_KEY!=0xf0)) //按键松手检测 { Delay10ms(); a++; } a=0; } } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(void) //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧