【发布时间】:2013-08-18 21:08:13
【问题描述】:
我知道,C 标准很好地定义了(unsigned)-1 必须产生 2^n-1,即。 e.一个无符号整数,其所有位都已设置。 (uint64_t)-1ll 也是如此。但是,我在 C11 标准中找不到指定如何解释 (uint64_t)-1 的内容。
那么,问题是:C 标准中是否有任何保证,以下哪项成立?
(uint64_t)-1 == (uint64_t)(unsigned)-1 //0x00000000ffffffff
(uint64_t)-1 == (uint64_t)(int64_t)-1 //0xffffffffffffffff
【问题讨论】:
-
你的最终目标到底是什么?获取无符号整数可表示的最大值?
-
不,只是对这种特殊情况下的标准保证感到好奇。我可以想到其他方法来产生最大整数值:-)