01/10/2018, 16:26
Hỏi về vòng lặp while?
Em chưa hiểu về thứ tự xử lý vòng lặp while lắm.
VD :
unsigned int t = 10;
while(t--)
{
abcxyz...
}
Em có hai cách hiểu nhưng chưa biết theo hướng nào:
-
Nó sẽ t = t-1 rồi kiểm tra điều kiện t > 0 rồi mới nhảy vào xử lý trong ngoặc { }
-
Nó sẽ kiểm tra t > 0 rồi mới nhảy vào trong ngoặc { } xử lý rồi mới quay về t = t - 1.
Theo e thì nó tương đương vớiwhile(t)
{
abcxyz…
t = t - 1;
}
Xin các bác giải đáp giúp
Bài liên quan
Ý thứ 2 của bạn hiểu sát hơn, sau khi kiểm tra điều kiện t > 0 đúng thì sẽ chạy luôn lệnh t = t - 1 chứ không phải abcxyz… rồi mới chạy t = t-1
Vâng rất cảm ơn bác.
Vậy thì nó hơi khác chút vòng lặp for(khởi gián, điều kiện, cập nhật).
Theo tài liệu thì khởi gián -> điều kiện -> xử lý trong ngoặc { } rồi mới nhảy về cập nhật . Như vậy là ông while này điều kiện -> cập nhật -> xử lý trong ngoặc có đúng không bác.
Bạn hiểu chưa đúng.
Thực ra
t--
ở đây được hiểu như là một biểu thức điều kiện (suy biến thành 0/1 ứng với falsy/truthy), chứ không có mechanism nào khác.@rogp10 ở đây bạn ấy hỏi trình tự xử lý trong vòng lặp như thế nào mà.
@Gian_Don để hiểu rõ hơn bạn xem kết quả khi chạy chương trình như sau:
Không cần thiết phải chia
t--
thành hai lệnh. Mà điều kiện của đoạn code tương đương làt != 0
chứ không phải là>
.Vâng trăm nghe không bằng một thấy. Em cảm ơn bác.
ở đây có sequence point trong điều kiện của while nên nó phải kết thúc trước thì mới xuống dưới thực hiện lệnh