可能重复:
逻辑比较:保证从左到右的评估?
我被告知对于每个 C 函数参数,最右边的参数将首先被执行/处理,并且它向左前进。右侧部分将首先执行,然后向左进行。
这是否适用于 && 和 || 等条件???
如果我正在编写 C++ 代码,我会先检查 NULL 条件,然后再检查是否执行我的操作。例如
if( CommDevice != NULL)
{
if(CommDevice->isOpen == TRUE)
{
//Do Something
}
}
我可以把它转换成if((CommDevice != NULL) && (CommDevice->isOpen == TRUE) )
“代码从右到左执行”的恐惧阻止了我,因为如果CommDevice
是 NULL,我正在尝试访问 NULL 的成员。它会产生异常。