2017-04-01 5 views
-1
status = (Hcill_state == HCILL_STATE_AWAKE)?GPIO_Request(GPIO_5,13):API_FAIL; 

上記コードは以下のコードと同等ですか?第1条件が真である場合にのみ割り当てられながら最初のものは、無条件に再割り当てを実行するためのコードのif条件を3進演算子に変換する

if (Hcill_state == HCILL_STATE_AWAKE) 
{ 
    status = GPIO_Request (GPIO_5,13); 
} 

答えて

2

二枚は、等価ではありません。あなたがのための操作を持っている2番目のケースで

Condition ? if true : if false 

:三項演算子のように定義し、以来

if (Hcill_state == HCILL_STATE_AWAKE) 
{ 
    status = GPIO_Request (GPIO_5,13); 
} 
else 
{ 
    status = API_FAIL; 
} 
2

最初のコードの同等はstatusからAPI_FAILを割り当てるelse枝を持っているでしょうtrueではなく、falseではありません。

したがって、これらのコードは、第2のものではelse文を持たないため、等しくありません。 あなたがこのように2番目のものを書いた場合、それは等しいでしょう。

if (Hcill_state == HCILL_STATE_AWAKE) 
{ 
status = GPIO_Request (GPIO_5,13); 
} 
else 
{ 
status = API_FAIL; 
}