这些运算符( =& , ~ )的功能是什么,我发现这段代码是作为一个笑话发布的,标题为
"Found in early Unix sources:"
if(rp->p_flag & SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}
编辑: 来源:http://www.bsdlover.cn/study/UnixTree/V6/usr/sys/ken/slp.c.html
最佳答案
~
是 unary bitwise complement ,它翻转整数中的位。
但是,在阅读评论并意识到我读错了您的代码后,我意识到您提供的代码甚至无法在现代 编译器中编译。
感谢@Avi:运算符 =&
的含义与今天的 &=
相同,但这种语法确实早于当前的 C 标准,因此它是真正古老的 UNIX 代码。
今天真正意味着什么
这里的 &
应该充当 address-of
运算符,而不是 bitwise AND
运算符。
int main()
{
int x = 5;
int y = 2;
x =& ~y;
}
编译这段代码会产生:
错误:左值需要作为一元“&”操作数
我真的认为转录有问题,按逻辑应该是&=
,而不是相反。
如果实际上是&=
,那么就是按位与。
关于谁能解释一下这些 c 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535395/