1u
có loại unsigned int
. Điều này sau đó được phủ nhận bằng toán tử -
đơn nhất. Hành vi này là như sau:
những tiêu cực của một số lượng unsigned được tính bằng cách trừ đi giá trị của nó từ 2 n, trong đó n là số bit trong toán hạng bạt (C++ 11 5.3.1/số 8).
-1u
do đó được đảm bảo cung cấp cho bạn giá trị lớn nhất có thể đại diện bởi unsigned int
.
Để nhận được giá trị lớn nhất thể hiện bằng loại không dấu tùy ý, bạn có thể truyền -1
cho loại đó. Ví dụ: đối với std::size_t
, hãy xem xét static_cast<std::size_t>(-1)
.
Nguồn
2011-12-05 21:21:58
Chữ thường không âm. Điều này được phân tách thành '- (1u)'. –
@KerrekSB có tạo nên sự khác biệt ở đây không? –
Vâng, nó làm cho kết quả đã được ký, vì vậy nó đánh bại mục đích của U. – StilesCrisis