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

这种景况除了嵌套一堆if,还有什么方法

2012-09-04 
这种情况除了嵌套一堆if,还有什么方法?C/C++ codevoid do_something(float x, float y, float z){}我需要

这种情况除了嵌套一堆if,还有什么方法?

C/C++ code
void do_something(float x, float y, float z){}

我需要在x、y、z大于、等于、小于零的时候,做某种操作,共有3X3X3=27种情况。目前使用一堆ifelse,有没有更高效的方法?

[解决办法]
如果要做27种操作的话,应该就规规矩矩的用IF吧。。。
[解决办法]
如果27种状态下要做不同的事情,那好像没什么好办法~~仔细分析下逻辑吧,看看有没有可以合并的。
或者多几个函数出来
C/C++ code
void do_something(float x, float y, float z){   if(x>0) do_something_x_positive(y,z);   else if(x<0) do_something_y_minus(y,z);   else do_something_y_zero(y,z);}
[解决办法]
下面的代码帮你建了一个映射关系,随后你用关于flag的switch或者是数组什么的都很整齐方便了。
C/C++ code
int flag = 0;if(x < 0){    flag |= 1 << 0;}else if(x > 0){    flag |= 2 << 0;}if(y < 0){    flag |= 1 << 2;}else if(y > 0){    flag |= 2 << 2;}if(z < 0){    flag |= 1 << 4;}else if(z > 0){    flag |= 2 << 4;}
[解决办法]
只能是if else
条件太多了!!

热点排行