我所说的代码发生在 此处. 我不知道这是合法的C,不会导致segfault.它是什么意思它相当于 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;
然而,算术 模数 modulo(谢谢,@chux--重启莫妮卡)或者位智AND表达式用更少的操作做出同样的结果,最重要的是没有条件分支,这样会降低效率。
比较一下问题 为什么处理一个排序数组比处理一个未排序数组快? 和 本回答 到它。