-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);
}
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);
}
這兩段代碼並不等價,因爲第一個代碼無條件地執行重新分配,而第二個只在條件爲真時才分配。
,第一碼的等效將有else
分支分配API_FAIL
到status
:
if (Hcill_state == HCILL_STATE_AWAKE)
{
status = GPIO_Request (GPIO_5,13);
}
else
{
status = API_FAIL;
}
因爲,三元操作符定義爲:
Condition ? if true : if false
在你的第二個情況下,你有一個操作true
但不適用於false
。
所以,這些代碼是不相等的,因爲第二個代碼中沒有其他語句。 如果你寫這樣的第二個,這將是平等的。
if (Hcill_state == HCILL_STATE_AWAKE)
{
status = GPIO_Request (GPIO_5,13);
}
else
{
status = API_FAIL;
}