โดยปกติแล้วโปรแกรมที่เราเขียนจะมีลำดับการทำงานจากบนไปล่าง ทีละคำสั่ง จบหนึ่งคำสั่งถึงไปทำอีกคำสั่งหนึ่ง แต่ถ้าเราต้องการให้มันทำงานเป็นเงื่อนไข คือต้องตัดสินใจว่าจะทำคำสั่งนึงหรือไม่ โดยขึ้นกับอีกคำสั่งนึง เราก็จะต้องใช้ control statement จำพวก if..else ลองอ่านประโยคข้างล่างดู
Console.Write("Please input number : ");
string s = Console.ReadLine();
int x = Int32.Parse(s);
if(x <>
} else {
Console.WriteLine("{0} is zero", x);
}
Dangling else
ภาษาหลาย ๆ ภาษาที่ไม่มีคำสั่ง end if (หรือ endif) มักจะเกิดปัญหาการตีความ ประโยคประมาณนี้
if(cond1)
ถ้าอ่านแล้วจะตีความได้สองแบบ
แบบที่ 1
if(cond1)
if(cond2)
stmt1;
else
stmt2;
หรือ แบบที่ 2
if(cond1)
if(cond2)
stmt1;
else
stmt2;
ปัญหาข้างบนเกิดขึ้นบ่อยมาก ๆ สำหรับคนพึ่งหัดเขียนโปรแกรมใหม่ ๆ และมีการจัด indent ไม่ดี ทำให้คนเขียนเองก็ตีความสับสน วิธีจำง่าย ๆ ก็คือ
รักแท้ยังแพ้ความใกล้ชิด : else แท้ ๆ ก็รัก if ตัวที่อยู่ใกล้ที่สุด
เพราะฉะนั้นแบบที่สอง ถ.
ถ.
ถ.
ถ.
ถ. ถูกต้องนะค้าบ