讨论C语言常规优化策略——条件语句优化

C语言常规优化策略


2 条件语句优化


2.1 多分枝条件语句优化


多分枝条件语句一般采用switch语句,这样的程序无论从清晰性和效率上都比原来的程序要好。例如下面的函数采用三种函数形式分别计算x在Alpha,Beta和Gamma处的值,通常的写法为:
int  f(int x)
{
 int  y;

 if (x==Alpha)
  y=f1(x);
 else
  if (x==Beta)
   y=f2(x);
  else
   if (x==Gamma)
    y=f3(x);
 return y;
}
采用switch语句可写成:
int  f (int x)
{
 int  y;

 switch (x)
 {
 case Alpha:  
  y=f1(x); 
  break;
 case Beta:
  y=f2(x); 
  break;
 case Gamma:  
  y=f3(x); 
  break;
 }
 return y;
}
值得指出的是,在多分支条件语句不能改造成语句时,我们一般采用紧缩的写法,例如我们要计算下面的分段函数值
 f(x)=  f1(x)  x<=Alpha
  f2(x)  Alpha <x<=Beta 
  f3(x) Beta<x<=Gamma
  f4(x) Gamma<x  
紧缩的写法为
int  f(int x)
{
 int  y;

 if (x<=Alpha)
     y=f1(x);
 else if (x<=Beta)
     y=f2(x);
 else if (x<=Gamma)
     y=f3(x);
 else
     y=f4(x);
 return y;
}

2.2 复杂条件分析与条件表达式化简


有时通过对复杂的条件表达式进行分析,将复杂条件表达式简化, 可以提高代码的效率,我们通过几个例子来说明复杂条件分析化简的方法。
2.2.1 三角形测试问题
给定三个正整数a、b、c,问它们是否构成一个三角形的三条边?
三个整数a、b、c构成三角形三边的充要条件为:
   a+b>c     (1)
   b+c>a     (2)
   c+a>b     (3)
一般来说,只要有了上述三个条件,我们不必再强调a、b、c>0,这些条件已经蕴含在上述三个条件中,如由(1)、(3)左、右两边分别相加化简后就可以得到a>0。由此得到三角形测试问题求解的第一个程序:
typedef int BOOL;
#define TRUE 1
#define FALSE 0

Bool IsTriangle(int a, int b, int c)
{
 if (a+b>c && b+c>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值