模模(谢谢,@chux - 恢复莫妮卡(或按位 AND 表达式在更少的操作中产生相同的结果,最重要的是没有条件分支,这会降低效率。
我所指的代码出现 这里。我不知道这是合法的c,不会导致段错误。什么意思?等同于var = &var[3]
吗?
不。表达式pos = (pos+1)&3;
等效于
pos = pos + 1;
pos = pos & 3;
除非它并不意味着将中间值存储回pos
变量。
编辑以在评论中回复其他问题
按位 AND 运算符在值 3 处修剪或更确切地说包装递增过程。代码可以写成
pos = pos + 1;
pos = pos % 4;
在这种情况下,这意味着:
pos = pos + 1;
if( pos > 3 )
pos = 0;
但是,算术
比较问题为什么处理排序数组比处理未排序数组更快?以及这个答案。