2012-04-11 153 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

簡短回答 - 是的。在比較之前,「較小」轉換爲較大的一個。

相關問題