我正在做一些X11 ctypes编码,我不知道C但需要一些帮助来理解这一点。
在下面的C代码中(可能是C ++我不确定),我们看到(~0L)
这是什么意思?在Javascript和Python中,~0
表示-1
。
812 int result = GetProperty(window, property_name,
813 (~0L), // (all of them)
814 &type, &format, &num_items, &properties);
由于
答案 0 :(得分:18)
0L
是一个long
整数值,所有位都设置为零 - 这通常是0
的定义。 ~
意味着反转所有位,这会留下一个long
整数,所有位都设置为1。
在二进制补码算法(几乎是通用的)中,所有位设置为1的有符号值为-1
。
使用~0L
代替-1L
的原因是为了更清楚意图 - 它根本不是用作数字,而是用作比特的集合
答案 1 :(得分:3)
长类型的零位补码。