找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9806|回复: 10
收起左侧

关于switch语句的使用,请高手进来看看!

[复制链接]
ID:51349 发表于 2013-6-28 14:55 | 显示全部楼层 |阅读模式
请大神看看这段代码问题在哪里呢?
switch(key_mode)

{
case 0:        
//        _nop_;
//        _nop_;

if(!key_add)
Vset1++;
if(!key_sub)
Vset1--;

Iset=(float)Vset1/1000;
break;

case 1:        
//        _nop_;
//        _nop_;

if(!key_add)
Vset2=Vset2-5;

Vset2=Vset2+5;


Tset=(float)Vset2/1000;
break;
}
谢谢指导!

回复

使用道具 举报

ID:51349 发表于 2013-6-28 14:57 | 显示全部楼层
自己先说下:调试的时候提示switch表达式有 illegal type
大家看是哪里的问题呢。
回复

使用道具 举报

ID:7485 发表于 2013-6-28 20:39 | 显示全部楼层
case 0:        
{//        _nop_;
//        _nop_;

if(!key_add)
Vset1++;
if(!key_sub)
Vset1--;

Iset=(float)Vset1/1000;
break;

}
回复

使用道具 举报

ID:7485 发表于 2013-6-28 20:46 | 显示全部楼层
根据你的程序,可能“break;”需要放大括号外面。
回复

使用道具 举报

ID:51325 发表于 2013-6-29 10:53 | 显示全部楼层
ahshmj 发表于 2013-6-28 20:46
根据你的程序,可能“break;”需要放大括号外面。

按你说的试了下
还是不行的
回复

使用道具 举报

ID:7485 发表于 2013-6-29 18:38 | 显示全部楼层
我说的是在每一个“case ”里面都要加大括号,你加了还是不行?
回复

使用道具 举报

ID:51325 发表于 2013-6-30 10:43 | 显示全部楼层
ahshmj 发表于 2013-6-29 18:38
我说的是在每一个“case ”里面都要加大括号,你加了还是不行?

是的,我在每一个case里面都加了啊。还是同样的问题
回复

使用道具 举报

ID:7485 发表于 2013-6-30 15:56 | 显示全部楼层
本帖最后由 ahshmj 于 2013-6-30 17:19 编辑

switch(key_mode)

{
case 0:        
//        _nop_;
//        _nop_;

if(!key_add)
Vset1++;
if(!key_sub)
Vset1--;

Iset=(float)Vset1/1000;
break;

case 1:        
//        _nop_;
//        _nop_;

if(!key_add)
Vset2=Vset2-5;
else                                 //不知道你的本意,但好像不应少这一行         
Vset2=Vset2+5;


Tset=(float)Vset2/1000;
break;
}

红色的是同一个变量的笔误?
回复

使用道具 举报

ID:7485 发表于 2013-6-30 17:14 | 显示全部楼层
像这类问题,请求帮助时,最好将程序完整的传上来。

按上面的改过来,应该是没问题的(我已测试过),但是如果里面牵涉到一些本小段以外的诸如变量或函数的说明、定义等,就难说了。比如“Iset" iset Tset ,都会出错。(提示肯定是不一样的了)
回复

使用道具 举报

ID:51325 发表于 2013-7-4 22:10 | 显示全部楼层
刚刚试了下,不行的。我什么时候把全文发上来大家再看看吧。
多谢楼上的几位了。
回复

使用道具 举报

ID:51503 发表于 2013-7-5 23:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表