2012-04-11 64 views
15

假设我有2个变量:C++:将64位整数与32位整数比较是否安全?

uint64_t a = ... 

uint32_t b = ... 

会比较整数产生预期的结果,即(a != b)(b > a)

+0

http://stackoverflow.com/questions/6770258/how-do-promotion-rules-work-when-the-signedness-on-e-side-side-of-a-binary-opera – 2012-04-11 20:25:05

回答

19

没问题。编译器在比较之前提升32位至64位

+0

搜索C++整数推广有关更多信息的规则。 – bames53 2012-04-11 20:17:35

+3

[这是一个答案](http://stackoverflow.com/a/6770275/636019)描述它们。 – ildjarn 2012-04-11 20:18:41

+0

是的,但如果其中一个已签名且另一个未签名,则比较可能无效。 – 2012-04-11 20:23:45

8

简短回答 - 是的。在比较之前,“较小”转换为较大的一个。

相关问题