首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

时序点有关问题

2012-03-15 
时序点问题,请指教MyClass*p...if(p- MyFunc1()&&p- MyFunc2()){p- MyFunc3()}这样的语句,由于&&操作

时序点问题,请指教
MyClass   *p;
...
if(p-> MyFunc1()   &&   p-> MyFunc2()   )
{
    p-> MyFunc3();
}

这样的语句,由于&&操作符是一个时序点,所以在执行的时候,是先执行MyFunc1,再执行MyFunc2然后做   &&   操作呢,还是判断MyFunc1   如果为   false   就不执行   MyFunc2呢?
时序点的意思,只是说先执行MyFunc1,再执行MyFunc2,并没有说是否一定会执行MyFunc2?如果不执行的话,那就和下面的语句等价了吗?
if(p-> MyFunc1()   )
    if(   p-> MyFunc2()   )
{
    p-> MyFunc3();
}



[解决办法]
&&,||等是C++语言中少数的几个明确规定了的,我觉得可以大胆使用,比如最常见的:

if(p && p-> Func1()) { ... }
这种大胆使用即可,永远不会引发空指针错误。

热点排行