วันพุธที่ 5 กันยายน พ.ศ. 2561

ทำไมใน main() ต้อง return 0;

ทำไมต้อง return 0 ใน main( )

คำถามยอดฮิตแต่คำตอบมีนิดเดียว หายากเหมือนกันครับ แต่เอาง่ายๆ เลย คือ

"เป็นกฏที่เพิ่มเข้ามาในมาตรฐานภาษา C ในปี 1999 หรือ C99"

โดยกำหนดให้มีการคืนค่าเป็นตัวเลขเสมอ จะไม่สามารถคืนค่าอื่นได้

ในสมัยก่อนการเขียนโปรแกรมภาษา C จะเขียนฟังค์ชัน main( ) ดังนี้

void main(){

}

บางคนบอกว่าไม่ส่งค่าอะไรกลับ จริงๆ แล้วก็ ส่งค่า void นั่นแหละครับ ต่อมาจึงมีกำหนดมาตรฐานใหม่ให้ส่งค่า int กลับคืน ดังนั้น ก่อนจบฟังค์ชัน main() จึงต้องส่งค่า 0 กลับไป หมายถึง โปรแกรมทำงานเสร็จสิ้นโดยสมบูรณ์แล้ว ไม่มี error

การทำงานลักษณะนี้คนที่คุ้นเคยกับ Linux ที่เขียนสคริปส์บ่อยๆ จะไม่ค่อยแปลกใจสักเท่าใดนั

สำหรับคนที่สอนเขียนภาษา C ส่วนหนึ่งจะเพิ่ม int main( ) และ return 0; เสมอ เพราะกลัวว่าบางคนใช้ ide บางรุ่นแล้วจะคอมไพล์ไม่ผ่าน แต่ปัจจุบันหลายโปรแกรมไม่มีปัญหาแบบนี้แล้ว อย่างไรก็ตามใส่ไว้ก็ไม่เสียหายครับ


 

มาตรฐานที่ออกปี 1990 ยังไม่มีข้อกำหนดให้ return 0 หากไม่ได้ส่งค่าอะไรกลับ โปรแกรมจะส่งค่า undefined กลับไป
 
 

มาตรฐานที่ออกปี 1999 กำหนดไว้ในข้อ 5.1.2.2.3 ให้ส่งค่า return 0 กลับไปด้วย
 
 

เอกสารอ้างอิง gnc-c Manual
http://studenti.fisica.unifi.it/~carla/manuali/gnu-c-manual.pdf

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Gtk4 ตอนที่ 6 Defining a Child object

Defining a Child object A Very Simple Editor ในบทความที่ผ่านมาเราสร้างโปรแกรมอ่านไฟล์ชนิดข้อความ และในบทความนี้ก็จะมาปรับแต่งโปรแกรมกันสักหน...