Hãy xem xét các đoạn mã sau:Sử dụng hợp lệ toán tử có điều kiện?
int i, k, m;
k = 12;
m = 34;
for (i = 0; i < 2; i++) ((i & 1) ? k : m) = 99 - i;
printf("k: %ld m: %ld\n\n", k, m);
Trong ví dụ ngớ ngẩn này, khái niệm nhà điều hành có điều kiện là một phím tắt cho:
if (i & 1) k = 99 - i; else m = 99 - i;
trình biên dịch của tôi không phàn nàn và thực hiện các đoạn mã này cung cấp cho các sản lượng được mong đợi
k: 98 m: 99
Câu hỏi của tôi, liệu đây có phải là mã hợp lệ theo tiêu chuẩn C không? Tôi chưa bao giờ thấy bất cứ điều gì giống như nó được sử dụng trước đây.
Nếu nó biên dịch và thực hiện như mong đợi, sau đó nó có khả năng hợp lệ nhất. Tuy nhiên, bạn nên tự hỏi mình nếu bạn muốn duy trì mã như thế, đặc biệt nếu nó không được xúc động trong một vài năm và bạn phải giải thích nó sẽ làm gì khi bạn quay trở lại 5 năm xuống đường. –