Theo tiêu chuẩn C (6.5.15 Toán tử có điều kiện)
4 Toán hạng đầu tiên được ước tính; có một điểm thứ tự giữa đánh giá của nó và đánh giá toán hạng thứ hai hoặc thứ ba (tùy theo đánh giá nào). Toán hạng thứ hai chỉ được ước tính nếu giá trị thứ nhất so sánh bằng 0; toán hạng thứ ba chỉ được ước tính nếu giá trị thứ nhất bằng 0; kết quả là giá trị của toán hạng thứ hai hoặc thứ ba (bất kỳ giá trị nào được ước tính), được chuyển đổi thành loại được mô tả dưới đây.110)
Vì vậy, trong biểu thức khởi tạo của tuyên bố này
int d = (b == c++) ? (c+1) : (c-1);
biến b
được so sánh với giá trị của biến c
vì toán tử tăng sau trả về giá trị của toán hạng trước khi tăng nó.
Vì các giá trị không bằng nhau ( b
được đặt thành 12 trong khi c
được đặt thành 11), nên biểu thức con (c-1)
được ước tính.
Theo báo giá có một điểm thứ tự sau khi đánh giá tình trạng của người vận hành. Nó có nghĩa là sau khi đánh giá điều kiện c
có giá trị 12
sau khi áp dụng toán tử tăng sau cho biến c
. Kết quả là biến d được khởi tạo bởi giá trị 1
( 12 - 1
).