C / C ++中的多个条件子句

时间:2011-09-10 11:45:01

标签: c++

我的目标是获得两个数字并执行与他们持有的值相对应的数据:

对于ex ..让变量 x y

我需要计算另一个var z 的值,如下所示:

z = x + y //如果 x = y = 1

z = x - y //如果 x = 0且 y = 1

由于我需要多次使用它,否则在循环中使用if else是没有效率的。

我基本上需要的就像一个宏....最好使用#define。,就好像它只使用一次:

#define x + y 1 将x + y替换为1,但不依赖于 x 和/或 y 的值

有什么方法可以用1替换x + y,用0替换x-y等等......

2 个答案:

答案 0 :(得分:3)

在运行时之前你无法知道xy的值,所以你无法做任何事情,只能使用if就像你要去的那样,并想到将会有的数学需要最少的操作(考虑到1 =减法=加法<乘法<除法通常)。

如果我误解了您只想将x + y替换为1x - y替换为0,则可以手动或通过查找和替换替换它们。< / p>

答案 1 :(得分:2)

如果vars是整数/任何其他基本类型,则无法提高性能,因为编译通常会将其转换为一个汇编代码行。例如sub eax, ebx

无论如何,如前所述,你不能在编译时这样做,因为在编译时不知道x,y值。

你可以提示编译器使用register关键字在寄存器上保存x和y,这样可以将变量保存在CPU寄存器中,以便更快地进行计算。