什么(~0L)是什么意思?

时间:2014-12-22 03:12:36

标签: c++ c x11 ctypes

我正在做一些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);

由于

2 个答案:

答案 0 :(得分:18)

0L是一个long整数值,所有位都设置为零 - 这通常是0的定义。 ~意味着反转所有位,这会留下一个long整数,所有位都设置为1。

在二进制补码算法(几乎是通用的)中,所有位设置为1的有符号值为-1

使用~0L代替-1L的原因是为了更清楚意图 - 它根本不是用作数字,而是用作比特的集合

答案 1 :(得分:3)

长类型的零位补码。