em có cái code này
int i=1;
printf("%d %d %d",++i,i++,++i); //2 3 2
printf("%d %d %d",i,i++,++i); //2 2 2
cho em hỏi là nó in theo trình tự nào vậy
em có cái code này
int i=1;
printf("%d %d %d",++i,i++,++i); //2 3 2
printf("%d %d %d",i,i++,++i); //2 2 2
cho em hỏi là nó in theo trình tự nào vậy
ơ sao lại vậy nhỉ ,mình cũng ko hiểu , mình dùng code block nó ra vậy , đã kiểm tra lại kết quả và ko đổi
đây gọi là các hành vi bất định (undefined behavior). Nên có thể ra các kết quả khác nhau.
Cái này bạn nào học hệ điều hành chắc sẽ rõ
++i và i++ đứng một mình thì vai trò như nhau
nhưng khi gán nó vào một biến thì khác nhau nên cẩn thận.
ví dụ n = ++i thì tăng i lên 1 rồi mới gán giá trị mới tăng cho n.
n = i++ thì gán i vào n trước rồi mới tăng i lên 1.
Ví dụ n = 9, i = 1;
n = ++i; // i tăng lên 1 là 2, rồi gán cho n => n = 2.
n = i++; // i gán cho n trước => n = 1, rồi i tăng lên 1, n không bị ảnh hưởng.
cách giải thích hợp lý nè
Rok_Hoang là chuẩn không cần chỉnh rồi rồi xD
Undefined behavior
Tùy trình biên dịch mà nó ra kq khác nhau