首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在网上看了这个代码,但是不明白为什么这行代码改用了结构体,会省空间?该怎么处理

2012-04-17 
在网上看了这个代码,但是不明白为什么这行代码改用了结构体,会省空间?假设a,b都是unsigned char类型C/C++

在网上看了这个代码,但是不明白为什么这行代码改用了结构体,会省空间?
假设a,b都是unsigned char类型
C/C++ code
if(a > 1 && a <= 10)
{
 b = 0;
}
else if(a > 10 && a <= 20)
{
 b = 1;
}
else if(a > 20 && a <= 30)
{
 b = 2;
}
else if(...)//N多个分支来判断
 .
 .
  .
#define RANGE_TABLE_SIZE 10 //假设是十个判断分支
typedef unsigned char BYTE;


typedef struct tagRANGE
{
 BYTE nLower;
 BYTE nUpper;
}RANGE;

code const RANGE g_RangeTable[RANGE_TABLE_SIZE] =
{
{1, 10},
{10, 20},
{20, 30},
 ...
};

//下面为判断过程
BYTE i = 0;
for(i = 0; i < RANGE_TABLE_SIZE; i++)
{
 if(a > RangeTable[i].nLower && a <= RangeTable[i]. nUpper)
 {
 b = i;
 }
}
 我实际测试了一下,改版之前足足用了147个字节,而改版后的只是70个字节。相差竟然有一倍之多。改变前看似铺天盖地的代码,其实是非常简单的逻辑。用了表格驱动法后,无论从代码量、可读性和可扩展性来说无疑提高了非常多。

[解决办法]
http://topic.csdn.net/u/20120408/16/53177eb9-0830-4477-9482-469ca629672c.html
[解决办法]
结贴.

热点排行