在网上看了这个代码,但是不明白为什么这行代码改用了结构体,会省空间?
假设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
[解决办法]
结贴.