ผลต่างระหว่างรุ่นของ "ภาษาซี"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
ไม่มีความย่อการแก้ไข
ป้ายระบุ: แก้ไขจากอุปกรณ์เคลื่อนที่ แก้ไขจากเว็บสำหรับอุปกรณ์เคลื่อนที่
ไม่มีความย่อการแก้ไข
ป้ายระบุ: แก้ไขจากอุปกรณ์เคลื่อนที่ แก้ไขจากเว็บสำหรับอุปกรณ์เคลื่อนที่
บรรทัด 204:
 
เครื่องที่ทำตาม[[IEEE 854|มาตรฐานจำนวนจุดลอยตัวของ IEEE]] เหตุการณ์การปัดเศษบางเหตุการณ์มีผลมาจากสถานะการปัดเศษปัจจุบัน (ได้แก่การปัดเศษเลขคู่ การปัดเศษขึ้น การปัดเศษลง และการปัดเศษเข้าหาศูนย์) ซึ่งอาจเรียกดูหรือตั้งค่าสถานะโดยใช้ฟังก์ชัน <code>fegetround()</code>/<code>fesetround()</code> ที่นิยามไว้ใน <code><[[fenv.h]]></code>
 
== ตัวอย่างโปรแกรม "Hello World" ==
ตัวอย่างโปรแกรม "[[เฮลโลเวิลด์]]" ซึ่งปรากฏอยู่ในหนังสือ ''เดอะซีโปรแกรมมิงแลงกวิจ'' ที่พิมพ์ครั้งแรก กลายมาเป็นตัวแบบของโปรแกรมเกริ่นนำในตำราการเขียนโปรแกรมส่วนใหญ่หากไม่คำนึงถึงภาษาที่ใช้เขียน โปรแกรมดังกล่าวจะแสดงผล "hello, world" ทาง[[อุปกรณ์ส่งออกมาตรฐาน]] ซึ่งมักจะเป็นเครื่องปลายทางหรือหน่วยแสดงผลจอภาพ
 
รหัสโปรแกรมรุ่นดั้งเดิมเป็นดังนี้
 
<source lang="text">
main()
{
printf("hello, world\n");
}
</source>
 
และหลังจากการปรับเปลี่ยนรหัสให้เข้ากับมาตรฐาน รหัสจึงเป็นดังนี้ <ref>รหัสตัวอย่างดั้งเดิมสามารถแปลได้บนตัวแปลโปรแกรมส่วนใหญ่ที่ไม่เข้มงวดเรื่องมาตรฐาน แต่มันก็ไม่สามารถปรับเปลี่ยนให้เข้ากับความจำเป็นของภาษาซี89หรือซี99ได้อย่างเต็มที่ ในความเป็นจริงแล้ว ภาษาซี99จำเป็นต้องสร้างข้อความวินิจฉัย</ref>
 
<source lang="text">
#include <stdio.h>
 
int main(void)
{
printf("hello, world\n");
return 0;
}
</source>
 
บรรทัดแรกของโปรแกรมเป็นคำสั่งชี้แนะตัวประมวลผลก่อน (preprocessing directive) แสดงไว้โดย <code>#include</code> ทำให้ตัวประมวลผลก่อน (อันเป็นเครื่องมืออย่างแรกที่พิจารณารหัสต้นฉบับขณะแปล) นำเนื้อหาข้อความทั้งหมดของไฟล์ส่วนหัวมาตรฐาน <code>[[stdio.h]]</code> เข้ามาแทนที่บรรทัดนั้น ซึ่งไฟล์ดังกล่าวมีการประกาศฟังก์ชันสำหรับอุปกรณ์นำเข้าและส่งออกมาตรฐานอาทิ <code>printf</code> [[วงเล็บแหลม]]ที่คลุมชื่อไฟล์ <code>stdio.h</code> (ซึ่งความจริงคือเครื่องหมายน้อยกว่า-มากกว่า) เป็นการแสดงว่า <code>stdio.h</code> ถูกกำหนดที่ตั้งโดยใช้กลยุทธ์การค้นหาที่ให้ความสำคัญต่อไฟล์ส่วนหัวมาตรฐาน มากกว่าไฟล์ส่วนหัวอื่นที่มีชื่อเดียวกัน [[อัญประกาศคู่]]อาจใช้ได้ในกรณีที่ต้องการนำไฟล์ส่วนหัวที่อยู่ใกล้เคียงหรือเจาะจงโครงการเข้ามารวม
 
บรรทัดถัดมาเป็นการนิยามฟังก์ชันชื่อว่า <code>main</code> ฟังก์ชัน [[ฟังก์ชัน main|<code>main</code>]] เป็นฟังก์ชันที่มีจุดประสงค์พิเศษในโปรแกรมภาษาซี สภาพแวดล้อมขณะทำงานจะเรียกใช้ฟังก์ชัน <code>main</code> เพื่อเริ่มต้นการทำงานโปรแกรม ตัวระบุชนิด <code>int</code> เป็นตัวแสดงว่า ''ค่าส่งคืน'' ที่ถูกส่งคืนโดยตัวที่เรียกใช้ (กรณีนี้คือสภาพแวดล้อมขณะทำงาน) จะเป็นจำนวนเต็มค่าหนึ่ง อันเป็นผลจากการประเมินค่าของฟังก์ชัน <code>main</code> คำหลัก <code>void</code> ในรายการพารามิเตอร์แสดงว่าฟังก์ชัน <code>main</code> ไม่ต้องใช้อาร์กิวเมนต์ <ref>ความจริงแล้วฟังก์ชัน <code>main</code> มีอาร์กิวเมนต์สองตัวได้แก่ <code>int argc</code> และ <code>char *argv[]</code> ตามลำดับ ซึ่งสามารถใช้จัดการกับ[[อาร์กิวเมนต์บรรทัดคำสั่ง]]ต่าง ๆ ได้ มาตรฐานภาษาซีจำเป็นต้องรองรับ <code>main</code> ทั้งสองรูปแบบ ซึ่งเป็นการปฏิบัติพิเศษที่ไม่เกิดขึ้นกับฟังก์ชันอื่น</ref>
 
วงเล็บปีกกาเปิดหมายถึงจุดเริ่มต้นของการนิยามฟังก์ชัน <code>main</code>
 
บรรทัดถัดมาเป็นการ ''เรียกใช้'' ฟังก์ชันที่ชื่อว่า <code>[[printf]]</code> ซึ่งประกาศไว้ใน <code>stdio.h</code> และจัดเตรียมขึ้นจากไลบรารีของระบบ ในการเรียกใช้ครั้งนี้ ฟังก์ชัน <code>printf</code> จะถูก ''ผ่านค่า'' ด้วยอาร์กิวเมนต์หนึ่งตัวคือตำแหน่งหน่วยความจำของอักขระตัวแรกในสายอักขระ <code>"hello, world\n"</code> สายอักขระดังกล่าวคือแถวลำดับที่ไม่มีชื่ออันประกอบด้วยชนิดข้อมูล <code>char</code> จะถูกสร้างขึ้นโดยอัตโนมัติโดยตัวแปลโปรแกรม และแถวลำดับจะมีอักขระค่าศูนย์ (null) เป็นสิ่งที่บ่งบอกจุดสิ้นสุดของสายอักขระ (<code>printf</code> จำเป็นต้องทราบสิ่งนี้) <code>\n</code> ที่ปรากฏในสายอักขระคือ ''ลำดับการหลีก'' (escape sequence) ภาษาซีจะตีความว่าเป็น[[อักขระขึ้นบรรทัดใหม่]] (newline) ซึ่งจะทำให้อุปกรณ์ส่งออกทราบว่าถึงจุดสิ้นสุดของบรรทัดปัจจุบัน ค่าส่งคืนจากฟังก์ชัน <code>printf</code> คือชนิด <code>int</code> แต่มันถูกละทิ้งไปอย่างเงียบ ๆ เนื่องจากไม่มีการใช้ (โปรแกรมที่ระมัดระวังมากกว่าอาจทดสอบค่าส่งคืน เพื่อพิจารณาว่าผลจากการทำงานของฟังก์ชัน <code>printf</code> สำเร็จหรือไม่) อัฒภาค <code>;</code> เป็นจุดสิ้นสุดข้อความสั่ง
 
ข้อความสั่ง <code>return</code> เป็นการสิ้นสุดการทำงานของฟังก์ชัน <code>main</code> และทำให้ฟังก์ชันส่งกลับเป็นจำนวนเต็มค่า 0 ซึ่งสภาพแวดล้อมขณะทำงานจะตีความว่าเป็นรหัสออกจากโปรแกรมที่แสดงว่าการทำงานประสบผลสำเร็จ
 
วงเล็บปีกกาปิดหมายถึงจุดสิ้นสุดของการนิยามฟังก์ชัน <code>main</code>
 
== ชนิดข้อมูล ==
เข้าถึงจาก "https://th.wikipedia.org/wiki/ภาษาซี"