ปัญหาของ Semicolon หลัง while
while (expression);
while loop จะทำงานไม่ว่า expression จะ true หรือ false เพราะ semicolon ทำให้เป็น empty statement
ปัญหาของ Semicolon หลัง if
if (expression);
คำสั่งจะทำงานไม่ว่า expression จะ true หรือ false เช่นกัน
เหตุผล
Syntax ของ if และ while คือ:
if (<expr>) <statement> // หรือ while (<expr>) <statement>
<statement> จะทำงานก็ต่อเมื่อ <expr> เป็น true แต่ถ้าไม่มี braces {} คำสั่งถัดไปที่จบด้วย ; จะกลายเป็น statement นั้น แม้จะเป็น empty statement ก็ตาม
if (<expr>) /* Empty Statement */; while (<expr>) /* Empty Statement */;
ในทั้งสองกรณี ไม่มีคำสั่งใดถูก執行 (หลังจากประเมิน expression แล้ว) แต่ while อาจเข้าสู่ infinite loop
หมายเหตุ: {} คือ statement-block (ประเภทหนึ่งของ statement ที่ประกอบด้วยรายการ statements อื่นๆ)