if 条件到三元运算符的转换

标签 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);
 }

最佳答案

这两段代码并不等价,因为第一段代码无条件执行重新分配,而第二段代码仅在条件为真时才进行分配。

第一个代码的等效项将有一个 else 分支,将 API_FAIL 分配给 status:

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

关于if 条件到三元运算符的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156188/

相关文章:

Python:以优雅的方式(代码保存)改进一个函数以避免多个语句

类似 :? 运算符的 PowerShell 语法?

我可以给 objdump 一个地址并让它反汇编包含函数吗?

c - 使用 strlen() 时超出时间限制错误?

.net - 如何使用c++或vb.net在windows中获取当前打开的应用程序?

python - 为什么即使我有尝试和异常(exception),它也会出现错误?

javascript - 在 'if' 语句中使用 JSON 对象?

javascript:三元运算符的意外评估行为

php - 内联 PHP/HTML 三元 If

c - 链接器错误 undefined reference ... c 中包含的库