Nếu bạn có những điều sau đây:Liệu các nhà điều hành ternary ngắn mạch một cách định nghĩa
if (x)
{
y = *x;
}
else
{
y = 0;
}
Sau đó, hành vi được đảm bảo phải được xác định vì chúng ta chỉ có thể dereference x
nếu nó không phải là 0
Can sự cùng thể nói cho:
y = (x) ? *x : 0;
Điều này dường như làm việc như mong đợi (thậm chí được biên soạn với -Wpedantic
trên g ++)
Điều này có được đảm bảo không?
Có - Toán tử bậc ba chỉ là cú pháp đường –
Có. (Quá ngắn để được đăng dưới dạng câu trả lời). – JSF
Không có "ngắn mạch" trong biểu thức thứ ba. Và nó không sớm đánh giá hoặc thực hiện bất kỳ chi nhánh nào trước khi điều kiện được đánh giá đầy đủ. –