我需要在图像中查找一个像素是否比其周围的8个像素具有最大值。

我不确定什么是最佳方法,所以我的想法是使用如下的if语句:

if(pixel > pixel1 && pixel > pixel2 && pixel > pixel3 && ... && pixel> pixel8)

我的问题如下:如果发现例如pixel不大于pixel1,它是否仍会检查语句的其余部分,或者由于它仅是AND,它将已经丢弃指令并继续执行?

如果答案是第一个,那将使得在任何时候都需要检查每个像素而在计算上非常繁重,有人可以给我提示如何更有效地解决这个简单问题吗?

最佳答案

这称为Short Circuit Evaluation



由于条件是&&,如果在任何条件下获得false,它都不会进一步检查

同样,如果条件为||,则一旦找到true,它将停止检查。

顺便说一句,我并不是绝对确定优先规则,因此,为了安全起见,我将每个条件放在括号中。

if((pixel > pixel1) && (pixel > pixel2) && ...

编辑:Operator precedence规则似乎表明在这种情况下括号是不必要的。

关于c++ - C++中的IF循环行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14335457/

10-09 20:15