将if条件转换为三元运算符

时间:2017-04-01 11:21:40

标签: c if-statement ternary-operator

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 个答案:

答案 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;
}