Vòng lặp for có for
từ khóa, theo sau là dấu ngoặc đơn chứa ba biểu thức tùy chọn được phân tách bằng dấu chấm phẩy, theo sau là phần nội dung thực thi trong mỗi lần lặp của vòng lặp.
Mục tiêu của vòng lặp for trong ví dụ của bạn là đặt giá trị của count
, giá trị này sẽ được so sánh với zahl
trong câu lệnh if sau đó. Điều này đạt được trong các biểu thức được phân tách bằng dấu chấm phẩy, vì vậy phần thân của vòng lặp không cần phải làm gì cả.
Vì vòng lặp không cần phải làm gì cả, nó sử dụng câu lệnh rỗng làm phần thân của nó.
Nếu phần ;
cuối bị bỏ qua và không có thay đổi nào khác được thực hiện, thì câu lệnh if sau vòng lặp for sẽ tự nó trở thành phần thân của vòng lặp for. (Điều đó không có ý định và sẽ phá vỡ chương trình, như bạn đã quan sát.)
Tuy nhiên, làm cho phần thân vòng lặp của một người bao gồm một phần tử duy nhất ;
trên cùng một dòng không phải là cách duy nhất để viết phần thân vòng lặp trống, cũng không phải là cách hợp lý nhất để làm như vậy. Nó hoạt động hoàn toàn tốt, nhưng vấn đề là những người đọc khác - và có lẽ là cùng một lập trình viên, quay lại dự án sau đó - có thể tự hỏi liệu nó có thực sự là một lỗi hay không. Rốt cuộc, một người gõ dấu chấm phẩy ở cuối dòng khá thường xuyên khi viết mã bằng ngôn ngữ kiểu C, vì vậy thật dễ dàng để gõ thêm một dấu chấm phẩy ở những nơi không thuộc về nó.
Vấn đề khác là, trong mã mà vòng lặp một dòng với ;
phần thân của nó là kiểu đã chọn, rất khó để nhận ra ai đó thực sự đã mắc lỗi khi đặt một ;
khi không thuộc.
Do đó, những lựa chọn thay thế này có thể phù hợp hơn:
- đặt
;
, thụt lề, trên dòng tiếp theo - như sh1 gợi ý
- viết phần thân của vòng lặp dưới dạng một khối trống
{ }
, thay vì một câu lệnh trống
- làm cho phần thân vòng lặp trở thành một
continue;
câu lệnh, điều này chỉ đơn giản làm cho vòng lặp chuyển sang lần lặp tiếp theo của nó (giống như những gì xảy ra khi phần thân vòng lặp trống) - cũng như sh1 gợi ý