我正在做一些 X11 ctypes 编码,我不懂 C,但需要一些帮助来理解这一点。

在下面的 C 代码中(可能是 C,我不确定)我们看到(~0L)这意味着什么?~0方法-1

812   int result = GetProperty(window, property_name,
813                            (~0L), // (all of them)
814                            &type, &format, &num_items, &properties);

谢谢

答案

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

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

使用理由~0L代替-1L是为了更清楚地表达意图 - 它根本不打算用作数字,而是用作位的集合。

来自: stackoverflow.com