Tại sao vòng lặp for thiếu biểu thức tăng mà vẫn đọc được các kí tự?

for (bieuthuc1; bieuthuc2; bieuthuc3)
Cho e hỏi là tại sao vòng lặp for thiếu bieuthuc3 mà vẫn đọc được các kí tự là sao vậy? Theo đúng thì hình như phải có biểu thức cộng để cho biết tăng bao nhiêu giá trị chứ???

Cả 3 phần trong cú pháp trên đều không bắt buộc nhé :smiley: chỉ có hai dấu chấm phẩy trong cặp ngoặc đơn là phải có thôi.

Ôn lại cú pháp: bieuthuc3 sẽ chạy trước (rồi mới đến bieuthuc2), chứ không cứ phải là ++i ++j gì cả.C không phải Pascal.

2 Likes

nhưng e thắc mắc là nếu không có biểu thức 3 thì sao nó lại đọc lần lượt được các kí tự (phải có điều kiện gì chứ nhỉ?)

Biểu thức thứ 2 là biểu thức điều kiện, nếu thỏa thì nó sẽ làm công việc trong vòng for, biểu thức 3 không có thì nó sẽ không làm gì. Nó chỉ cần biết bạn nhập vào chữ cái gì thì nó sẽ đêm đi so sánh coi thỏa đk biểu thức 2 hay không thôi. Nếu thỏa thì tiếp tục nhập, còn không thỏa thì out loop.

2 Likes

Vẫn đọc được đó bạn. Hai toán hạng được lượng giá trước, sau đó mới tính ra biểu thức logic (bieuthuc2).

Tức là getchar() tính trước, rồi mới gán cho c và sút c về. Sau đó so sánh c với DAUCHAM.


Vòng for thực hiện như sau:

  • Lần đầu tiên: Bieuthuc1 -> Bieuthuc2 -> <bt2?> (Đ) -> thân vòng lặp (S) -> chạy tiếp câu sau.
  • Những lần tiếp theo: Bieuthuc3 -> Bieuthuc2 -> <bt2?> (Đ) -> thân vòng lặp (S) -> chạy tiếp câu sau.

Cả ba biểu thức đều có thể bỏ trống và khi biểu thức 2 bị bỏ trống thì vòng lặp sẽ chạy không ngừng cho đến khi gặp break; hoặc bị kill task (ctrl + alt + del -> end task).

2 Likes

cám ơn tất cả!! Thanks so much!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?