【发布时间】:2012-11-07 06:28:16
【问题描述】:
可能重复:
Logical comparisons: Is left-to-right evaluation guaranteed?
我被告知对于每个 C 函数参数,最右边的参数将首先被执行/处理,并且它向左前进。 右边的部分将首先执行,然后向左前进。
这是否适用于 && 和 || 等条件? ??
如果我正在编写 C++ 代码,我会先检查 NULL 条件,然后在执行操作时再检查。例如
if( CommDevice != NULL)
{
if(CommDevice->isOpen == TRUE)
{
//Do Something
}
}
我可以在if((CommDevice != NULL) && (CommDevice->isOpen == TRUE) ) 中转换它吗?
“代码从右到左执行”的恐惧阻止了我,因为如果 CommDevice 为 NULL 并且我正在尝试访问 NULL 的成员怎么办。会产生异常。
【问题讨论】:
-
你展示的是表达,而不是争论。
-
你不能指望函数参数评估顺序:stackoverflow.com/questions/376278/…。但是,由于短路评估,这不适用于此处。
-
见here。
标签: c++ c if-statement