在e2fsprog代码库中,有一行如:
#define NO_BLK ((blk64_t) -1)
和
typedef __u64 __bitwise blk64_t;
我打印这个NO_BLK值,它是18446744073709551615,这是2 64 -1
我的问题是:
括号()
如何将类型blk64_t
转换为值2 64 -1?
问题已关闭。
答案 0 :(得分:0)
这不是这里发生的事情。
(blk64_t)
将其右侧的值转换(转换)为类型blk64_t
。
这里的值是-1。在64位二进制补码表示法中,带符号整数-1
和无符号整数2^64-1
具有相同的表示形式。 1111 ... 111(64个)