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

上述代碼是否等價於下面的代碼?如果條件轉換爲三元運算符

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

回答

2

這兩段代碼並不等價,因爲第一個代碼無條件地執行重新分配,而第二個只在條件爲真時才分配。

,第一碼的等效將有else分支分配API_FAILstatus

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

因爲,三元操作符定義爲:

Condition ? if true : if false 

在你的第二個情況下,你有一個操作true但不適用於false

所以,這些代碼是不相等的,因爲第二個代碼中沒有其他語句。 如果你寫這樣的第二個,這將是平等的。

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