读书人

if (假 amp;amp; 真) 的有关问题.

发布时间: 2013-04-21 21:18:07 作者: rapoo

if (假 && 真) 的问题..
本帖最后由 weiwuyuan 于 2013-04-20 11:25:54 编辑 bool bl = true;
int x = 0;
if (!bl && 3/x)
{
int a = 0;
}

什么问题大家看出来了吧?
我听说如果左边表达式不成立,右边的表达式将不被执行,是这样的么?
这属于语法范畴么? 我想知道这种语法是否足够标准? 因为,我可能会利用这种用法来实现很多功能.
[解决办法]
是的 语法上有要求
lexp && rexp
lexp的值为0的
那么 rexp 不求值

同理
lexp
[解决办法]
rexp
lexp的值为非0
rexp不求值

并且保证了
&&
[解决办法]

这样的表达式是从左向右求值
[解决办法]
短路求值,应该没什么问题,比如
char *p = 0;
if (p && strcpy(p ,xxx)) 可以将必须成立的放在左边,有依赖的放在右边

读书人网 >C++

热点推荐