Sau khi đọc câu trả lời này về hành vi và điểm trình tự không xác định, tôi đã viết một chương trình nhỏ:
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
Đầu ra là 2
. Chúa ơi, tôi đã không thấy sự sụt giảm sắp tới! Chuyện gì đang xảy ra ở đây?
Ngoài ra, trong khi biên dịch mã trên, tôi nhận được một cảnh báo:
px.c: 5: 8: cảnh báo: toán hạng bên trái của biểu thức dấu phẩy không có hiệu lực
[-Wunused-value] i = (i, ++i, 1) + 1; ^
Tại sao? Nhưng có lẽ nó sẽ được trả lời tự động bằng câu trả lời cho câu hỏi đầu tiên của tôi.
printf("2\n");