Nếu chương trình C++ áp dụng toán tử bitwise-not (~) cho giá trị boolean, điều đó có gọi hành vi không xác định không?Không sử dụng toán tử bitwise không (~) trên các giá trị boolean gọi hành vi không xác định?
Ví dụ: chương trình sau được xác định rõ là gì?
bool f = false;
bool f2 = ~f; // is f2 guaranteed to be true, or is this UB?
bool t = true;
bool t2 = ~t; // is t2 guaranteed to be false, or is this UB?
(Vâng, tôi biết có một nhà điều hành đó là tốt hơn phù hợp với các loại điều này;! Cho các mục đích của câu hỏi này, chúng ta sẽ bỏ qua sự tồn tại của nó;))
Tôi đoán '~' kích hoạt đối số thành 'int' trước khi làm bất cứ điều gì, vì vậy ~ 0 sẽ chuyển thành' true'. Không thể chắc chắn 100% mà không cần tìm kiếm. – chris
@chris, bạn nói đúng. –
là UB để làm 'bool b = 13;' [hay cái gì đó tương tự]? –