2012-11-18 38 views
-3

這是我想要做的簡化。基本上,x總是等於f1,y = f2等。在x =/= y =/= z的情況下,我的代碼起作用。但是,如果任何兩個(或更多)或x,y和z相等,則此代碼不起作用。if語句滿足的第一個實例?

構造類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子句都滿足了嗎?編輯:如果x = y(即f1 = f2),那麼我想使用if(f == x)子句爲f1,if(f == y)子句爲f2。如果x = z(即f1 = f3),則對於f1使用if(f == x),對於f3使用if(f == z)。如果x = y = z(f1 = f2 = f3),則對於f1使用if(f == x),對於f2使用if(f == y),並且如果對於f3使用(f == y) 。

+0

您忘記告訴我們您的代碼在平等時應該做什麼,請修改您的問題以反映此問題。 –

+0

一旦if/else鏈中的任何單個if語句塊已滿足,其他語句塊都會被跳過。基本上是第一個'真實'的條件殺死了所有其他部分。 –

+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 
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目前每個條件被評估。

相關問題