这是关于逻辑运算符||,&&的一个非常详细的问题。在C ++上。我在我的代码中使用它们,但我怀疑这段代码:
bool filluppointer(int*sth);
if (filluppointer(&pointer) || filluppointer2(&pointer))
return;
如果发生了某些事情,filluppointer会返回true,所以并非总是如此。我的问题是,如果第一个函数返回true,那么if块中的第二个函数会被执行吗? ||等于OR运算符,因此根据规范,两个函数连续执行,然后比较bool。 我只是想创建一个结构,当遇到第一个真正的函数时,整个if结构返回,然后停止然后关键是因为我想要指针中的特定值。之后执行另一个函数将改变值(不在此处,但在我的实际代码中它会改变)。
答案 0 :(得分:7)
答案 1 :(得分:3)
C ++标准保证表达式从左到右进行评估,并且只要表达式可以知道,就不再进行进一步的评估。这对于以下内容尤其方便:
if (ptr != NULL && ptr->x > 12) ...
或
if (x != 0 && y / x > 0) ...
甚至这应该有效:
if (ptr == NULL || ptr->x > 12)
如果评估将“一直”完成,则上述所有内容都将无效。