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)) 可以将必须成立的放在左边,有依赖的放在右边