if else条件语句和条件(三目)运算符的应用场合
if else 条件语句与条件(三目)运算符,他们都是选择功能,在很多情况下可以通用,真的要说它们的区别的话,那估计是它们的身份不一样,If else 可以说是语句的关键字,而 A? B:C 只是一种运算符,它的结果是一个值,不能算是完整的语句。大家或许朦胧的记得,在实现同样的功能上,运用条件运算符所生成的代码一般比使用if else 的代码简洁,但这不是所有的情况都一样,要使它们达到最佳效果,应用场合是不同的。那么,在什么情况下适合用if else语句,又在什么情况下适合用条件运算符呢?下面举例:
/
Example1:
UINT8 Disk0_Infor [32];
UINT8 Disk1_Infor [32];
if( hub_index==1 )
mCmdParam.SaveVariable.mBuffer = Disk_Infor_Hubpotr1;
else
mCmdParam.SaveVariable.mBuffer = Disk_Infor_Hubpotr0;
或使用条件运算符:
mCmdParam.SaveVariable.mBuffer=hub_index>0?Disk_Infor_Hubpotr1:Disk_Infor_Hubpotr0;
///
Example2:
if(PageIndex!=0)
{
PageIndex--;
}
else
{
PageIndex=PageIndexSum;
}
或使用条件运算符:
PageIndex = PageIndex!=0 ? PageIndex-- : PageIndexSum;
/
首先,经过测试,它们都能实现预期的目的,然后我查看了它们生成的代码。Example1使用条件运算符的代码少些。Example2使用 if else 的代码少些。因为Example1中的选择条件和分支语句都显得比较简单,所以适合条件运算符的。而Example2则相反,吃力不讨好,代码增多了,CPU资源占多了,可读性也差了,故在这种比较复杂的情况下,用if else 语句还省code,cpu资源。