我正在阅读一些在线编写的C代码,遇到了以下这行代码:
if(!(array[index] ^ array[index - 1]))
^ 操作符是按位异或,因此我理解这行代码的意思是:如果“索引处的数组值与前一个索引处的值不同”,则返回true。简化一下,可以理解为“如果索引处的数组值与前一个索引处的数组值相同,则返回true”。
按照这种理解,这段代码似乎是用一种过于复杂的方式来表达以下内容:
if(array[index] == array[index - 1])
这些表达式是相同的吗?如果不是,为什么呢?如果我没有读错,我最好的解释是,由于这段代码涉及时钟信号上的中断,因此它需要快速。也许位运算比使用==
更快?