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);
}
答案 0 :(得分:2)
这两段代码不相同,因为第一条代码无条件地执行重新分配,而第二条代码仅在条件为真时分配。
相当于第一个代码的else
分支将API_FAIL
分配给status
:
if (Hcill_state == HCILL_STATE_AWAKE)
{
status = GPIO_Request (GPIO_5,13);
}
else
{
status = API_FAIL;
}
答案 1 :(得分:2)
因为,三元运算符定义为:
Condition ? if true : if false
在第二种情况下,您有true
的操作,但false
没有操作。
所以,这些代码并不相同,因为在第二个代码中你没有else语句。 如果你写下这样的第二个,那就等了。
if (Hcill_state == HCILL_STATE_AWAKE)
{
status = GPIO_Request (GPIO_5,13);
}
else
{
status = API_FAIL;
}