Swa*_*and 9 c c++ if-statement
可能重复:
逻辑比较:是否保证从左到右的评估?
我被告知,对于每个C函数参数,最右边的参数将首先执行/处理,然后向左进展.右侧部分将首先执行,然后向左前进.
这适用于像&&和||这样的条件 ??
如果我正在编写C++代码,我首先检查NULL condtion然后在下一步检查我是否执行了我的操作.例如
if( CommDevice != NULL)
{
if(CommDevice->isOpen == TRUE)
{
//Do Something
}
}
Run Code Online (Sandbox Code Playgroud)
我可以转换吗 if((CommDevice != NULL) && (CommDevice->isOpen == TRUE) )
"代码从右到左执行"恐惧正在阻止我,因为如果CommDevice是NULL,我试图访问NULL的成员.它会产生异常.
Pub*_*bby 10
我被告知每个C函数都从右到左进行参数化.右侧部分将首先执行,然后向左前进.
这是100%不正确.参数评估的顺序未指定!
的顺序&&和||被定义,因为它形成了一个顺序点.首先评估左边,如果没有短路,则评估右边.
if((CommDevice != NULL) && (CommDevice->isOpen == TRUE) )
Run Code Online (Sandbox Code Playgroud)
这是对的.