【发布时间】:2011-08-06 16:24:00
【问题描述】:
是否保证逻辑运算符 (&&||) 的从左到右求值?
假设我有这个:
SDL_Event event;
if (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
// do stuff
}
}
这个保证和这个一样吗?
SDL_Event event;
if (SDL_PollEvent(&event) && event.type == SDL_QUIT) {
// do stuff
}
这也很重要,假设我们有两个要求,a 和 b。需求a 比b 更有可能失败。那么说if (a && b) 比if (b && a) 更有效率。
【问题讨论】:
-
&&暗示的排序的一个经典而重要的用途是在使用前测试空指针:if (a != 0 && a->b != 0 && a->b->c != 0) { somefunc(a->b->c->d); }。该顺序对于避免核心转储至关重要。 (为了说明,我忽略了得墨忒耳定律!) -
@Jonathan:我忽略它是为了完成任何工作!
-
这些不是“比较”运算符。
标签: c++ logical-operators operator-precedence