是否满足if语句的第一个实例?

时间:2012-11-18 01:52:16

标签: c++

这是我想要做的简化。基本上,x总是等于f1,y = f2等。在x = / = y = / = z的情况下,我的代码有效。但是如果任何两个(或更多)或x,y和z相等,则此代码不起作用。

类Base_Class的构造函数:

Base_Class(double f){

    double x=1, y=2, z=3;  

    if(f == x)
        do something
    else if(f == y)
        do something else
    else if(f == z)
        do something else

}

我想做

Base_Class f1=1, f2=1, f3=1;

我很困惑,为什么这不适用于上面的if语句。并非所有if条款在技术上都满意吗?

编辑:如果x = y(即f1 = f2),那么我想对f1使用if(f == x)子句,对f2使用if(f == y)子句。

如果x = z(即f1 = f3),则对f1使用if(f == x),对f3使用if(f == z)。

如果x = y = z(f1 = f2 = f3),则使用if(f == x)表示f1,if(f == y)表示f2,if(f == y)表示f3。

2 个答案:

答案 0 :(得分:1)

这些条款在技术上并不满足。如果有两个相同的值,则只执行第一个if语句并跳过其余的语句。在f1 == x的情况下,即使y == f2z == f3,也会执行第一个块。

if(f1 == x)
  do something
else if(f2 == y)
  do something else
else if(f3 == z)
  do something else

你的if语句应该是相互独立的,就像这样。

if(f1 == x)
  do something
if(f2 == y)
  do something else
if(f3 == z)
  do something else

答案 1 :(得分:0)

if (f1 == x)
    // do something
else if (f2 == y)
    // do something else
else if (f3 == z)
    // do something else

这将仅执行分支条件为真的第一个if语句主体,因为只有在所有先前的分支条件都为假的情况下才会评估其他每个分支条件。

if (f1 == x)
    // do something
if (f2 == y)
    // do something else
if (f3 == z)
    // do something else

这将执行所有那些真实的,因为没有else存在每个条件被评估。