这些运算符的功能是什么(=&,〜),我发现这个代码是一个笑话并标题为
"在早期的Unix资源中找到:"
if(rp->p_flag & SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}
Run Code Online (Sandbox Code Playgroud)
编辑:来源:http://www.bsdlover.cn/study/UnixTree/V6/usr/sys/ken/slp.c.html
~是一元按位补码,它以整数形式翻转位.
但是,在阅读评论并意识到我错误地阅读了您的代码后,我意识到您提供的代码甚至无法在现代编译器中编译.
感谢@Avi:运算符=&意味着&=今天意味着什么,但这种语法确实早于当前的C标准,因此它是真正古老的UNIX代码.
今天真正意味着什么
在&这里应该充当address-of运营商,而不是bitwise AND运营商.
int main()
{
int x = 5;
int y = 2;
x =& ~y;
}
Run Code Online (Sandbox Code Playgroud)
编译此代码将产生:
error: lvalue required as unary ‘&’ operand
我真的认为转录存在问题,从逻辑上讲,它应该是&=而不是其他方式.
在实际情况下,那就是&=按位进行.