C - #define计算大小的最大值

时间:2013-12-31 04:08:40

标签: c

在e2fsprog代码库中,有一行如:

#define NO_BLK ((blk64_t) -1)

  typedef __u64 __bitwise     blk64_t;

我打印这个NO_BLK值,它是18446744073709551615,这是2 64 -1

我的问题是: 括号()如何将类型blk64_t转换为值2 64 -1?

问题已关闭。

1 个答案:

答案 0 :(得分:0)

这不是这里发生的事情。

(blk64_t)将其右侧的值转换(转换)为类型blk64_t

这里的值是-1。在64位二进制补码表示法中,带符号整数-1和无符号整数2^64-1具有相同的表示形式。 1111 ... 111(64个)