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

zer*_*lus 17 c++

假设我有2个变量:

uint64_t a = ...

uint32_t b = ...
Run Code Online (Sandbox Code Playgroud)

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

siz*_*erz 23

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

  • [这是一个答案](http://stackoverflow.com/a/6770275/636019)描述它们. (4认同)
  • 问题开始于“假设我有 .. uint64_t ... uint32_t”。如果我们假设,那么两者都没有签名。 (2认同)

not*_*row 8

简短回答 - 是的.在比较之前,'较小'被转换为较大的一个.