คำถามคำสั่ง for() กับการวาง semicolon ในภาษา C
ต้องขออนุญาตสำหรับเจ้าของคำถามนะครับที่นำรูปมาลงไว้ ณ. ที่นี่
การที่จะเข้าใจความแตกต่างของ ";" (semicolon) วางไว้ข้างหน้ากับข้างหลังแตกต่างกันอย่างไร เราต้องเข้าใจคำสั่ง for ในภาษา C ก่อนครับ
รูปแบบคำสั่ง for ในภาษา C เป็นดังนี้
for ( init; condition; increment )
{
statement(s);
}
init: ติดตั้งค่าเริ่มต้น ทำงานครั้งเดียวเมื่อเข้าลูป for จากนั้นไม่มีการทำงานอีกแล้ว
condition: ตรวจสอบเงื่อนไขเมื่อมีการวนลูปในแต่ละรอบ จริง-ยังคงลูปต่อ เท็จ-ออกจากลูป
increment: เพิ่มค่าตัวแปรหรือมีการเรียกใช้งานทุกครั้งหลังจากเกิดการทำงานในลูปแต่ละรอบ
สรุปง่าย ๆ คือ ";" ใน for ใช้ในการคั้นเงื่อนไขครับ ใส่หน้าใส่หลัง ส่งผลให้เงื่อนไขมีการเปลี่ยนแปลงตำแหน่งครับ ยกตัวอย่างเช่น
for (; i>0; i--)
init: ค่าเริ่มต้นเราไม่รู้ว่าคืออะไร หรือไม่กำหนดค่าเริ่มต้น เลยปล่อยให้ว่าง ๆ ไว้
condition: คือ i >0 ถ้า i มากกว่า 0 ก็ ลูปต่อไป
increment: คือ i-- ลดค่า i ลงหนึ่งค่าทุก ๆ ครั้งที่มีการลูป
***
คราวนี้เราลองเปลี่ยน ";"
คือ เอา ";" ของคำสั่ง for ข้างต้น for (; i>0; i--) มาไว้ด้านหลัง ดังนี้ for (i>0; i--;) เกิดอะไรขึ้นครับ
init: i>0
condition: i--
increment: ไม่มี
***
ผลการทำงานของโปรแกรมก็จะเปลี่ยนแปลงไปด้วยนะครับ ส่วนจะเปลี่ยนแปลงอย่างไร ลองนำโค้ดโปรแกรม 2 ตัวอย่างนี้ไปรันเปรียบเทียบกันดูครับ :)
ตัวอย่างที่ 1.
ตัวอย่างที่ 2.
ความคิดเห็น
แสดงความคิดเห็น