我需要在图像中查找一个像素是否比其周围的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/