Có, và đây là lý do. Hãy suy nghĩ về những gì dấu phẩy đang nói. Tất cả những gì nó nói là "này, tôi có một điều tôi muốn làm ở phía bên tay trái của dấu phẩy này, một khi bạn làm điều đó đi đến điều bên phải và làm điều đó là tốt.Bạn cũng có thể nghĩ về nó như một cách ngắn hơn để làm điều này
int i = 1;
int j = i++;
tôi đã được phân bổ ở đâu đó trong bộ nhớ để tất cả những gì xảy ra với j là phải mất rằng giá trị được lưu trữ trong i, increments nó, và đặt nó bằng đến j.
Vì vậy, trong trường hợp của
int i = 1, j = ++i;
Tất cả các bạn đang nói là tạo ra một số nguyên, thiết lập nó bằng một, bây giờ chuyển sang lệnh tiếp theo, đó sẽ là một int gọi là j, và đặt nó bằng bất cứ điều gì tôi là khi nó được tăng lên.
Vì vậy, để trả lời đầy đủ câu hỏi của bạn, có, nó đảm bảo thứ tự bởi vì trình biên dịch sẽ thực thi mọi thứ trên xuống, từ trái sang phải trừ khi được nói khác đi.
Nguồn
2015-06-13 05:42:44
Tôi không chắc chắn liệu C89 có đảm bảo thứ tự khai báo –
Bạn nói, * Dấu phân tách dấu phẩy khác với toán tử dấu phẩy. * Nhưng phần còn lại của câu trả lời không đề cập đến toán tử dấu phẩy. Đó có phải là sự giám sát không? –
@DavidHeffernan no, câu hỏi là "Tuy nhiên, không dấu phẩy ** tách ** trong định nghĩa loại trong C cũng đảm bảo trật tự?" . Câu mở đầu của tôi chỉ làm rõ rằng tôi không nói về toán tử dấu phẩy (đặc biệt là đối với những độc giả khác không nhận ra có sự khác biệt) –