Khi bạn có câu lệnh như sau:
while (expression);
vòng lặp while sẽ chạy bất kể biểu thức có đúng hay sai. Tuy nhiên, nếu bạn viết:
if (expression);
câu lệnh sẽ chạy bất kể biểu thức có đúng hay sai. Điều này là do cú pháp của if và while là:
if (<expr>) <statement> // hoặc while (<expr>) <statement>
Vì vậy <statement> chỉ được thực thi nếu <expr> đánh giá là true. Trong while, nó sẽ rơi vào vòng lặp vô tận.
Câu hỏi là <statement> nào được thực thi. Nếu không có cặp ngoặc nhọn {} thì câu lệnh tiếp theo bị kết thúc bởi ; ngay cả khi câu lệnh đó là RỖNG. Lưu ý rằng câu lệnh rỗng là hợp lệ.
if (<expr>) /* Câu lệnh rỗng */; while (<expr>) /* Câu lệnh rỗng */;
Trong cả hai trường hợp, không có gì được thực thi (sau khi biểu thức được đánh giá). Tuy nhiên while có thể vào vòng lặp vô tận. Lưu ý: '{}' là một khối câu lệnh (statement-Block - một loại câu lệnh chứa danh sách các câu lệnh khác).