Giả sử tôi có 2 biến:C++: Có an toàn khi so sánh số nguyên 64 bit với số nguyên 32 bit không?
uint64_t a = ...
uint32_t b = ...
sẽ so sánh các số nguyên mang lại kết quả mong đợi, ví dụ: (a != b)
, hoặc (b > a)
?
Giả sử tôi có 2 biến:C++: Có an toàn khi so sánh số nguyên 64 bit với số nguyên 32 bit không?
uint64_t a = ...
uint32_t b = ...
sẽ so sánh các số nguyên mang lại kết quả mong đợi, ví dụ: (a != b)
, hoặc (b > a)
?
Không sao cả. Trình biên dịch kích hoạt 32 bit đến 64 bit trước khi so sánh
Câu trả lời ngắn gọn - có. Các 'nhỏ hơn' được chuyển đổi thành một cái lớn hơn trước khi so sánh.
http://stackoverflow.com/questions/6770258/how-do-promotion-rules-work-when-the-signedness-on-either-side-of-a-binary-opera –