| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1047 人关注过本帖
标题:switch,43个case?有更好的解决方法吗?
取消只看楼主 加入收藏
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
switch,43个case?有更好的解决方法吗?
如题,函数的目的要读到相应位置的数据 函数声明为int ReadSingleData(int Address)
输入Address是从0到42总共43个整数(表示位置)
返回是读到的数据,比如:输入0对应  int a
输入1对应 float b
.
.
.
.输入42对应 float xx
a,b,....,xx,这些变量是开始定义好的,在其他的函数里还要分别用到,我这里写的时候进行了简化,其实他们是属于不同结构的变量。
这43个数里面有int 和float两种类型的数据。
当然,最后return的时候会把float数全部转化为int。

我想到一个很笨的方法用switch,但是43个case让我望而却步,望高手给我一个更好的方法,谢过谢过~~~~~~~



[ 本帖最后由 fallingstar6 于 2009-10-27 15:48 编辑 ]
搜索更多相关主题的帖子: switch case 
2009-10-27 14:41
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
回复 3楼 pgy
谢谢pgy,我想我可能没说太清楚,我重新修改了一下帖子
2009-10-27 15:47
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
回复 5楼 pgy
是的,是不同结构体中的变量
实际上我是DSP编程,这些结构体中的变量是经常变的,先转化了后来需要调用的时候不好处理。。。。

[ 本帖最后由 fallingstar6 于 2009-10-27 16:42 编辑 ]
2009-10-27 16:37
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
嗯,如果类型都一样,比如说float,就可以创建一个指针数组,直接调用数据的指针就可以了,是不是这样?
2009-10-27 16:55
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
回复 9楼 cosdos
这个方法可行,我试试,多谢了~~
2009-10-27 23:30
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
回复 10楼 m456m654
我自己是清楚的,就是case太多啊
2009-10-27 23:33
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
这么晚还不睡,早点睡吧~~~~~~~~
2009-10-27 23:34
fallingstar6
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-27
收藏
得分:0 
回复 9楼 cosdos
union data {
    int     idata;
    float fdate;
    int    isfloat;
} ar[43];   // 初始化比较麻烦

嗯,搞定了,用了cosdos的方法,联合里面分别是指向int和float的指针,至于ar[n]具体下面应该是*int 还是*float用了一个简单的if再加switch语句

这样读和写都能随着结构里面变量的变化而变化了
2009-10-28 15:06
快速回复:switch,43个case?有更好的解决方法吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016210 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved