Dạng chung của câu lệnh for như sau:
for (khởi_tạo; điều_kiện; thao_tác) câu_lệnh;
- Khởi tạo: câu lệnh gán dùng để thiết lập biến điều khiển vòng lặp.
- Điều kiện: biểu thức quan hệ xác định thời điểm thoát khỏi vòng lặp.
- Thao tác: định nghĩa cách biến vòng lặp thay đổi sau mỗi lần lặp.
- Trong vòng lặp for, kiểm tra điều kiện diễn ra ở đầu vòng lặp. Do đó, khối lệnh bên trong có thể không bao giờ được thực thi nếu điều kiện ban đầu là sai.
Ví dụ cơ bản:
x = 10; for (y = 10; y != x; ++y) printf(" %d", y);
Biến thể 1: Sử dụng toán tử phẩy
Toán tử phẩy cho phép khởi tạo hoặc cập nhật nhiều biến trong cùng một câu lệnh for.
for (x = 0, y = 0; x + y < 10; ++x);
Ở đây, cả x và y cùng điều khiển vòng lặp.
Biến thể 2: Thiếu các phần trong định nghĩa vòng lặp
Một đặc điểm thú vị của for là các phần trong định nghĩa có thể bị bỏ trống.
for (x = 0; x != 456; ) scanf("%d", &x);
Mỗi lần lặp, x được kiểm tra xem có bằng 456 không. Vòng lặp kết thúc khi người dùng nhập 456.
Biến thể 3: Vòng lặp vô hạn
Nếu ba phần khởi tạo, điều kiện và thao tác đều bị bỏ trống, ta có một vòng lặp vô hạn. Câu lệnh break dùng để thoát khỏi vòng lặp.
for (;;) {
ch = getchar();
if (ch == 'A')
break;
}
Biến thể 4: Vòng lặp for không có thân (empty body)
Thân vòng lặp for có thể rỗng, điều này giúp tăng hiệu suất cho một số thuật toán.
Ví dụ: Xóa các khoảng trắng đầu trong chuỗi str:
for ( ; *str == ' '; str++) ;
Ứng dụng khác: Tạo độ trễ thời gian với thân rỗng:
for (t = 0; t < 1000; t++);