C++:将64位整数与32位整数进行比较是否安全?

18

假设我有两个变量:

uint64_t a = ...

uint32_t b = ...

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


https://dev59.com/M2w15IYBdhLWcg3wMY6L - user195488
2个回答

25

没问题。编译器在比较前会将32位升级到64位。


搜索C++整数提升规则以获取更多信息。 - bames53
是的,但如果一个是有符号的,而另一个是无符号的,那么比较可能不起作用。 - user195488
2
问题开始于“假设我有.. uint64_t ... uint32_t”。如果我们假设这样,那么两者都不是有符号的。 - Robᵩ

8

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接