让 params 成为包含成员 valueInt 的结构的指针。我想在指向的结构中检查 valueInt 的值,但仅在检查指针是否为NULL之后。所以我尝试了条件运算符:
if ((NULL == params) ? 1: (cJSON_Int != params->valueInt))
{
// Do Something
}
我的要求是首先检查指针NULL等效,然后取消引用它。但根据我们公司的指导原则,我不应该使用三元运算符。有什么方法可以代替我在这里使用的条件语句(类似于短路语句)?
答案 0 :(得分:2)
逻辑OR运算符是一个短路运算符,这意味着如果它可以从左操作数确定表达式的最终结果,它将不会计算右操作数。
所以你可以这样做:
if ((NULL == params) || (cJSON_Int != params->valueInt))
{
...
}
如果if
为NULL或第二个条件为真,则会进入params
块。如果NULL == params
评估为真,则不会评估第二部分。
答案 1 :(得分:1)
我发现在分支中使用显式案例更容易(也更易读):
if (params == NULL) {
// Do something
} else {
// It is not NULL, check value
if (cJSON_Int != params->valueInt) {
// value is not cJSON_Int
} else {
// optional else
}
}