我正在做一些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);
谢谢
解决方法
0L是一个长整数值,所有位都设置为零 – 通常是0的定义.〜表示反转所有位,这将使您具有一个长整型,所有位都设置为1.
在二进制补码算法(几乎是通用的)中,所有位设置为1的带符号值为-1.
使用〜0L而不是-1L的原因是更清楚的意图 – 它不意味着被用作一个数字,而是一个位的集合.