我正在处理一些包含
的C代码return ~0;
这是什么意思? google几乎不可能......
答案 0 :(得分:20)
〜是一个按位not / complement,也就是说它将所有0改为1,反之亦然。 ~0是一个值,所有位都设置为1。
答案 1 :(得分:6)
在检查代码时回答此类问题的关键是识别语言的足够结构以了解要问的问题。例如,return
语句需要一个表达式,该表达式与函数本身的声明返回类型兼容。
知道~0
必须是一个表达式,它或者是一个非常有趣的编写数字的方法,或者它是一个你不认识应用于常数零的运算符。后一个假设很容易检查,谷歌搜索“C语言运算符”将很快导致dozens of tables of operators。其中~
几乎会告诉您0
运算符是一个按位而非一元运算符,它反转其操作数的每个位。在这种特定情况下,将有符号整数{{1}}转换为用其所有位设置表示的整数。
在您将遇到的大多数平台上,该整数的值为-1。
答案 2 :(得分:4)
~
(代字号)运算符对其单个整数操作数执行按位补码。
补充数字意味着将所有0
位更改为1
,将所有1
更改为0
s
答案 3 :(得分:3)
无论如何,对于像你这样的特殊符号的搜索查询“return~0;”您可以使用 http://symbolhound.com/
这对程序员非常有用。
答案 4 :(得分:2)
此处有两个独立的部分:return
和~0
。
return
是一个return语句。在你最喜欢的C书中阅读它。
~0
是一个表达式,由应用于整数常量~
的按位补码运算符0
组成。类型int
的零值中的所有位都被反转(变为1),并且结果int
值(所有位都设置为1)是~0
表达式求值的值。在二进制补码机器上,带有这种位模式(111...1
)的带符号整数值将代表-1
。
答案 5 :(得分:0)
不为零或为真。
答案 6 :(得分:0)
代字号对数字0进行逐位补充,它返回一个值,所有位都设置为1,返回值的大小(所以你得到一个字符的0xFF等)