ภาษา C พัฒนาโดย Dennis Ritchie แห่งห้องปฏิบัติการ Bell Laboratories ในปี ค.ศ 1972 พัฒนาเพื่อใช้งานบนระบบปฏิบัติการ Unix ซึ่งมีลำดับการพัฒนาดังนี้
ภาษา Algol (ปี 1960 : ใช้คำนวณ) à ภาษา CPL (ปี 1963) à ภาษา BCPL (ปี 1967) àภาษา B (ปี 1970) à ภาษา C (ปี 1972) à ภาษา C++ (ปี 1990) à ภาษา Java, C#, Visual C++
ภาษาคอมพิวเตอร์
การทำงานกับเครื่องคอมพิวเตอร์ เป็นการติดต่อสารระหว่างมนุษย์กับเครื่องคอมพิวเตอร์ นั่นคือการสั่งให้เครื่องคอมพิวเตอร์ทำงานหรือเป็นการโต้ตอบระหว่างมนุษย์กับเครื่องคอมพิวเตอร์ การที่จะพูดจากับคอมพิวเตอร์ได้ต้องอาศัยภาษาที่คอมพิวเตอร์เข้าใจ ภาษาคอมพิวเตอร์ในปัจจุบันถูกพัฒนามาจากภาษา คอมพิวเตอร์ในยุคต้น ๆ ตามแนวความคิดของผู้ประดิษฐ์ภาษาเพื่อให้มีประสิทธิภาพมากขึ้น โดยถูกสร้างขึ้นมาตามวัตถุประสงค์และความแตกต่างของการใช้งาน เช่นงานเกี่ยวกับข้อมูลข่าวสาร งานคำนวณทางด้านคณิตศาสตร์ งานด้านการบัญชี งานด้านกราฟิก และงานเขียนรายงานทางด้านเอกสารเป็นต้น ภาษา คอมพิวเตอร์ที่ดีควรเป็นภาษาที่เขียนง่ายเข้าใจง่าย มีขนาดเล็กมีความรวดเร็วและความถูกต้องสูง มีความยืดหยุ่นในการใช้งานสูง หมายความว่ามีข้อจำกัดต่ำ สามารถที่จะประยุกต์ใช้งานได้กว้างขวาง
ระดับของภาษาคอมพิวเตอร์
1. ภาษาระดับต่ำ (Low-level Language) เช่น ภาษาเครื่อง (machine code) และภาษา Assembly
2. ภาษาระดับกลาง (Middle-level Language) เช่น ภาษา C
3. ภาษาระดับสูง (High-level Language) เช่น Fortran, Cobol, Pascal, Vissual Basic, Java
1.2 การเข้าใช้งานโปรแกรม
เมื่อเข้าไดเรคเทอรี่ TC โดยการพิมพ์ TC เพื่อเรียกโปรแกรมภาษาซี ดังตัวอย่าง
ส่วนประกอบหน้าจอ Editor
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt-F9 Compile F9 Make F10 Menu |
รูปที่ 2 แสดงสภาพแวดล้อมของภาษาซี
ส่วนประกอบที่สำคัญของภาษาซีที่ใช้เป็นส่วน ใหญ่ในการเขียนโปรแกรมได้แก่
Menu bar เป็นส่วนที่ให้เลือกทำรายการต่าง ๆ ในการเขียนซอร์สโค้ด สามารถเข้าสู่เมนูโดยการกด F10 รายการต่างบนเมนู ได้แก่
-เมนู File เป็นส่วนที่ใช้ในการจัดการเกี่ยวกับไฟล์
File
New Open… F3 Save… F2 Save as… Save all.. Print Dos shell |
รูปที่ 3 แสดงส่วนประกอบของเมนู File
New เปิดแฟ้มข้อมูลใหม่ จะได้ส่วนของ Editor ที่ว่างเปล่าใช้ในการเขียนซอร์สโค้ดใหม่
Open เปิดซอร์โค้ดเก่าขึ้นมาแก้ไข
Save บันทึกไฟล์
Save as บันทึกไฟล์โดยเปลี่ยนชื่อใหม่หรือเปลี่ยนแหล่งเก็บใหม่
Save all บันทึกทุกไฟล์ที่เปิดอยู่ทุกไฟล์
Chang dir เป็นส่วนที่ใช้ในการเปลี่ยนแปลงไดเรคเทอรี่ ในการจัดการเกี่ยวกับไฟล์
Print ใช้ในการพิมพ์ซอร์สโค้ดออกทางเครื่องพิมพ์
Dos shell ไปที่ Dos ชั่วคราว เป็นส่วนที่ใช้ในการกลับไปออกจัดการกับ Dos โดยตรงโดยไม่ต้องปิดเทอร์โบซี และกับเข้าสู่เทอร์โบซีอีกครั้งโดยการพิมพ์ข้อความ EXIT
Quit ออกจาเทอร์โบซี
เราสามารถใช้ Hotkey เพื่อให้สามารถทำงานได้เร็วขึ้น โดยการกด Alt ค้างแล้วตามด้วยตัวอักษร
ที่เป็นสีแดงของเมนูนั้น เช่น Alt+F+S เป็นการบันทึกไฟล์ หรือกด F2 ตามที่ปรากฏในเมนูก็ได้ผลลัพธ์
เช่นเดียวกัน
- Run เป็นคำสั่งให้รันโปรแกรม และตรวจหาข้อบกพร่อง (debug) มีคำสั่งย่อยดังนี้
Run (Ctrl + F9) เป็นคำสั่งให้ทำการประมวลผลโปรแกรมที่อยู่ในหน่วยความจำ สามารถรัน โปรแกรมได้โดยการกด Alt + F9 ถ้าโปรแกรมยังไม่ได้ผ่านการคอมไพล์ เทอร์โบซี จะทำการคอมไพล์ก่อนแล้วจึงรันโปรแกรม ผลลัพธ์ของโปรแกรมจะแสดงใน หน้าต่างเอาท?พุท ซึ่งสามารถดูดได้โดยกด Alt + F5 และกลับเข้าสู่หน้าต่างเอดิตโดยการกดคีย์ใด ๆ
Program reset (Ctrl + F2) เป็นคำสั่งให้ยกเลิกดีบักต่าง ๆ
Goto cursor (F4) เป็นคำสั่งให้รันโปรแกรมตั้งแต่ต้นจนถึงคำสั่งที่อยู่ก่อนบรรทัดที่เคอร์เซอร์ ปรากฏอยู่
Trace into (F7) เป็นคำสั่งให้ทำทีละคำสั่งเริ่มจาก main() แล้วจะหยุดรอเมื่อกด F7 จะทำคำสั่งถัดไป
Step over (F8) เป็นคำสั่งให้ทำงานในลักษณะเดียวกัน Trace into ต่างกันที่ Step over จะไม่หยุดในแต่ละคำสั่งอขงฟังก์ชั่น ในกรณีที่มีการเรียกใช้ฟังก์ชั่น
- Compile เป็นคำสั่งที่ใช้ในการคอมไพล์โปรแกรม หรือสร้างไฟล์ชนิด .EXE จากโปรแกรมที่อยู่บนหน้าต่าง edit ที่กำลังทำงานอยู่ หรือบนโปรเจ็คที่เกี่ยวข้อง
Compile (Alt + F9) เป็นคำสั่งให้คอมไพล์ที่แสดงอยู่บนหน้าต่าง edit (.CPP) ให้เป็นไฟล์ ชนิด .OBJ
เมื่อ Turbo C++ คอมไพล์ จะมีหน้าต่างบอกสถาะนะทางหน้าจอ โดยจะบอกผลของการคอมไพล์ ได้แก่ Line compile และจำนวนคำสั่งที่ Error และ Warning
เมื่อการคอมไพล์ไม่สมบูรณ์ให้กดคีย์ใด ๆ เพื่อกลับไปที่ส่วนของหน้าต่าง edit
ถ้าคอมไพล์ไม่สมบูรณ์ Turbo C++ จะแสดงส่วนที่ผิดพลาด (error) หรือ warning ที่หน้าต่าง massage (Massage Window)
Make (F9) เป็นคำสั่งเกี่ยวกับการสร้างไฟล์ชนิด .EXE ไฟล์ .EXE ที่ได้จากคำสั่ง Make เกิดจากกรณีใดกรณีหนึ่งในสองกรณีดังต่อไปนี้
1. ได้จากโปรเจ็คไฟล์ (Project File) เป็นไฟล์ชนิด .PRJ ซึ่งถูกกำหนดโดยคำสั่ง Open project
2. ได้จาก Source Code จากหน้าต่าง edit ที่กำลังทำงานอยู่
Link คำสั่งนี้จะลิงค์ไฟล์ชนิด .OBJ เข้ากับไลบรารี่มาตรฐานของ Turbo C++ เพื่อสร้างไฟล์ชนิด .EXE
Build all เป็นคำสั่งคอมไพล์ไฟล์ทุกไฟล์ซึ่งกำหนดในไฟล์ชนิด .PRJ โดยไม่มีการตรวจสอบ และเวลาแล้วสร้างไฟล์ชนิด .EXE ของไฟลบ์ชนิด .PRJ คำสั่งนี้จะให้ผลเหมือนคำสั่ง Make ต่างกันที่คำสั่ง Make จะตรวจสอบวันที่และเวลาของไฟล์ชนิด .CPP และ .OBJ (ชื่อเดียวกัน) โดยถ้าวันที่และเวลาที่บันทึกไฟล์ชนิด .OBJ มีลำดับก่อนไฟชนิด .CPP ก็จะคอมไพล์ไฟล์ชนิด .CPP นั้นใหม่
-Options เป็นคำสั่งที่ใช้กำหนดการทำงานของ Tubo C++ คำสั่งนี้มีคำสั่งย่อยทั้งหมด 10 คำสั่ง ในหัวข้อนี้จะกล่าวเฉพาะคำสั่งที่จำเป็นได้แก่คำสั่ง Directories
Directories เป็นคำสั่งที่ใช้ในการกำหนดไดเรคเทรี่ของไฟล์ที่สำคัญใน Tubo C++ มี dialog box ของการกำหนดไดเรคเทอรี่ ดังนี้ :-
C:\tc\include
C:\tc\lib
C:\tc\output
Ok Cancel Help
รูปที่ 4 แสดงองค์ประกอบของ Dialog Directories
จากรูปเมื่อเลือกรายการย่อย Directory จากเมนู Options จะได้ dialog box เพื่อให้กำหนดเส้นทาง (path) ของไฟล์ที่เป็นเฮดเดอร์ไฟล์และไฟล์ที่เป็นไลบรารี่มาตรฐาน ในกรณีที่กำหนดเส้นทางไม่ถูกต้องหรือไม่ได้กำหนดเส้นทางของไฟล์เหล่านี้ ก็ไม่สามารถที่จะคอมไพล์หรือรันโปรแกรมได้ นอกจากนี้ยังใช้ในการกำหนดเส้นทางที่ใช้เก็บ Source code และ Object file อีกด้วย ดังรายละเอียยดต่อไปนี้
Include directory เป็นส่วนที่ใช้กำหนดเส้นทางของ Header file ที่มีชนิดของไฟล์เป็น .H จากรูปที่ 1.4 กำหนดว่า Header file อยู่ที่ C:\tc\include หมายความว่าไฟล์ที่มีชนิดของไฟล์เป็น .H เก็บอยู่ที่ได้เรคทอรี่ย่อย include ของได้เรคทอรี่ tc บนไดรฟ์ C
Library Directories เป็นส่วนที่ใช้กำหนดเส้นทางของไลบรารี่มาตรฐาน (Library file) ที่มีชนิดของไฟล์เป็น .LIB จากรูปที่ 1.4 กำหนดให้ไลบรารี่มาตรฐานอยู่ที่ C:\tc\lb นั่นคือไฟล์ที่มีชนิด .LIB เก็บอยู่ที่ไดเรคเทอรี่ย่อย LB ของได้เรคเทอรี่ tc [นไดรฟ์ C
Output Directory เป็นส่วนที่ใช้กำหนดเส้นของ Output file เป็นไฟล์ที่ได้จากการคอมไพล์และการลิงค์ได้แก่ไฟล์ที่มีชนิดของไฟล์เป็น .OBJ และ EXE จากรูปที่ 1.4 Output file ถูกกำหนดเส้นทางไว้ที่ไดเรคเทอรี่ย่อย Output ของไดเรคเทอรี่ tc บนไดรฟ์ C ถ้าไม่มีการระบุเส้นทางของ Output file Turbo C++ จะเก็บไฟล์เหล่านี้ไว้ที่ ไดเรคทอรี่ tc
Source Directory เป็นส่วนที่ใช้กำหนดเส้นทางของ Source code เป็นไฟล์ที่มีชนิดของไฟล์ เป็น .CPP ในบางครั้งอาจไม่จำเป็นต้องระบุเส้นทางของ Source Directory ก็ได้
- Edit Window เป็นส่วนที่ใช้ในการเขียน source code หรือเขียนโปรแกรม และใช้ในการแก้ไขโปรแกรมต่าง ๆ ในกรณีที่มีการคอมไพล์แล้วเกิดการ error แก้ไขได้ที่ Edit Windows
-Message Window เป็นส่วนที่แสดงสถานะของการ error หรือ warning ที่เกิดจากคอมไพล์ โดย message window จะบอกรายละเอียดของการ error หรือ warning และสามารถที่จะแก้ไขได้ที่ Edit Window
-Hotkey เป็นส่วนที่บอกหน้าที่ต่าง ๆ ของคีย์พิเศษ เพื่อให้การทำงานบน Turbor C++ จะกล่าว
รายละเอียดในหัวข้อต่อไป
คีย์พิเศษ (Hotkey)
คีย์พิเศษจะมีหน้าที่คล้ายกับคีย์พิเศษต่าง ๆ ในการใช้งาน บน Word หน้าที่ของคีย์พิเศษที่ควรทราบมีดังนี้
คีย์สำหรับการเลื่อนเคอร์เซอร์
Ctrl + A เลื่อนเคอร์เซอร์ไปที่อักษรตัวแรกของคำที่เคอร์เซอร์อยู่
Ctrl + F เลื่อนเคอร์เซอร์ไปที่อักษรตัวสุดท้ายของคำที่เคอร์เซอร์อยู่
Ctrl + QS เลื่อนเคอร์เซอร์ไปที่ต้นบรรทัด
Ctrl + QE เลื่อนเคอร์เซอร์ไปที่บรรทัดแรก โดยมีคอลัมน์ตรงกับคอลัมน์เดิม
Ctrl + QX เลื่อนเคอร์เซอร์ไปที่บรรทัดสุดท้าย โดยมีคอลัมน์ตรงกับคอลัมน์เดิม
Ctrl + QR เลื่อนเคอร์เซอร์ไปที่บรรทัดแรก
Ctrl + QC เลื่อนเคอร์เซอร์ไปที่บรรทัดสุดท้าย
PgUp เลื่อนขึ้น 1 หน้า
PgDn เลื่อนลง 1 หน้า
คีย์สำหรับลบข้อความและแทรกบรรทัด
Ctrl + Y ลบบรรทัดที่มีเคอร์เซอร์อยู่
Ctrl + N แทรกบรรทัดที่มีเคอร์เซอร์อยู่
Ctrl + QY ลบข้อความตั้งแต่ตำแหน่งที่เคอร์เซอร์อยู่จนถึงท้ายบรรทัด
Ctrl + T ลบข้อความตั้งแต่ตำแหน่งที่เคอร์เซอร์อยู่จนถึงอักษรตัวสุดท้ายของคำ
Ctrl + G ลบตัวอักษรที่ตำแหน่งที่เคอร์เซอร์อยู่
Backspace ลบตัวอักษรที่อยู่ทางซ้ายของที่เคอร์เซอร์
คีย์ที่เกี่ยวกับการสร้างบล็อกสำหรับ Turbo C
Ctrl + KB กำหนดตำแหน่งเริ่มต้นบล็อก
Ctrl + KK กำหนดตำแหน่งท้ายบล็อก
Ctrl + KC คัดลอกบล็อก
Ctrl + KV วางข้อความของบล็อกที่ได้จากการคัดลอก
Ctrl + KW เขียนข้อความที่อยู่ในบล็อก
Ctrl + KR อ่านข้อความจากไฟล์มาแสดง ณ ตำแหน่งที่เคอร์เซอร์อยู่
Ctrl + KH ซ่อนบล็อก เมื่อกด Ctrl + KH อีกครั้งจะแสดงบล็อกเดิมออกมา
Ctrl + KY ลบบล็อก
Ctrl + KP พิมพ์ข้อความที่อยู่ในบล็อกหรือโปรแกรมที่อยู่ในหน้าต่างเอดิตออกทางเครื่องพิมพ์
คีย์ที่จัดการเกี่ยวกับไฟล์
F2 บันทึกโปรแกรมที่อยู่บนหน้าต่างเอดิด
F3 เปิดไฟล์จากแผ่นแม่เหล็กเข้าสู่หน้าต่างเอดิต
คีย์การเกี่ยวกับคอมไพล์
Alt+ F9 Compile
F9 Make
การเขียนโปรแกรมระบบเป็นการใช้งานหลักของภาษาซี ซึ่งรวมไปถึงการพัฒนาระบบปฏิบัติการและโปรแกรมประยุกต์ระบบฝังตัว เนื่องจากลักษณะเฉพาะอันเป็นที่ต้องการถูกรวมเข้าไว้ด้วยกัน อย่างเช่น ความสามารถในเคลื่อนย้ายได้กับประสิทธิภาพของรหัสต้นฉบับ ความสามารถในการเข้าถึงที่อยู่ของฮาร์ดแวร์ที่ระบุ ความสามารถเรื่อง type punning เพื่อให้เข้ากับความต้องการการเข้าถึงข้อมูลที่กำหนดไว้จากภายนอก และความต้องการทรัพยากรระบบขณะทำงานต่ำ ภาษาซีสามารถใช้เขียนโปรแกรมเว็บไซต์โดยใช้ซีจีไอเป็น "เกตเวย์" เพื่อแลกเปลี่ยนสารสนเทศระหว่างเว็บแอปพลิเคชัน เซิร์ฟเวอร์ และเบราว์เซอร์ [10] ปัจจัยบางอย่างที่ทำให้เลือกภาษาซีแทนที่จะเป็นภาษาอินเทอร์พรีตเตอร์ คือความเร็ว เสถียรภาพ และความอ่อนไหวต่อการเปลี่ยนแปลงในสภาพแวดล้อมของการดำเนินงาน เนื่องจากเป็นธรรมชาติของภาษาคอมไพเลอร์ [11]ผลจากการยอมรับในระดับกว้างขวางและประสิทธิภาพของภาษาซี ทำให้ตัวแปลโปรแกรม ตัวแปลคำสั่ง ไลบรารีต่าง ๆ ของภาษาอื่น มักพัฒนาขึ้นด้วยภาษาซี ตัวอย่างเช่น ตัวแปลโปรแกรมภาษาไอเฟลหลายโปรแกรมส่งข้อมูลออกเป็นรหัสภาษาซีเป็นภาษากลาง เพื่อส่งต่อให้ตัวแปลโปรแกรมภาษาซีต่อไป การพัฒนาสายหลักของภาษาไพทอน ภาษาเพิร์ล 5 และภาษาพีเอชพี ทั้งหมดถูกเขียนขึ้นด้วยภาษาซี
ภาษาซีมีประสิทธิภาพสำหรับคอมพิวเตอร์เพื่องานคำนวณและวิทยาศาสตร์ เนื่องจากความสิ้นเปลืองต่ำ ธรรมชาติของภาษาระดับต่ำ ธรรมชาติของภาษาที่ถูกแปล และมีส่วนคณิตศาสตร์ที่ดีในไลบรารีมาตรฐาน ตัวอย่างของการใช้ภาษาซีในงานคำนวณและวิทยาศาสตร์ เช่นจีเอ็มพี ไลบรารีวิทยาศาสตร์ของกนู แมเทอแมติกา แมตแล็บ และแซส
ภาษาซีบางครั้งใช้เป็นภาษาระหว่างกลางในการทำให้เกิดผลของภาษาอื่น แนวคิดนี้อาจใช้เพื่อความสะดวกต่อการเคลื่อนย้าย โดยให้ภาษาซีเป็นภาษาระหว่างกลาง ซึ่งไม่จำเป็นต้องพัฒนาตัวสร้างรหัสแบบเจาะจงเครื่อง ตัวแปลโปรแกรมที่ใช้ภาษาซีในทางนี้เช่น บิตซี แกมบิต จีเอชซี สควีก และวาลา เป็นต้น อย่างไรก็ตามภาษาซีถูกออกแบบมาเพื่อเป็นภาษาเขียนโปรแกรม ไม่ใช่ภาษาเป้าหมายของตัวแปลโปรแกรม จึงเหมาะสมน้อยกว่าสำหรับการใช้เป็นภาษาระหว่างกลาง ด้วยเหตุผลนี้นำไปสู่การพัฒนาภาษาระหว่างกลางที่มีพื้นฐานบนภาษาซีเช่น ภาษาซีไมนัสไมนัส
ผู้ใช้ขั้นปลายใช้ภาษาซีอย่างแพร่หลายเพื่อสร้างแอปพลิเคชันของผู้ใช้เอง แต่เมื่อแอปพลิเคชันใหญ่ขึ้น การพัฒนาเช่นนั้นมักจะย้ายไปทำในภาษาอื่นที่พัฒนามาด้วยกัน เช่นภาษาซีพลัสพลัส ภาษาซีชาร์ป ภาษาวิชวลเบสิก เป็นต้น
การพัฒนาช่วงแรก
การเริ่มต้นพัฒนาภาษาซีเกิดขึ้นที่เบลล์แล็บส์ของเอทีแอนด์ทีระหว่าง พ.ศ. 2512–2516 [2] แต่ตามข้อมูลของริตชี ช่วงเวลาที่เกิดความสร้างสรรค์มากที่สุดคือ พ.ศ. 2515 ภาษานี้ถูกตั้งชื่อว่า "ซี" เพราะคุณลักษณะต่าง ๆ ต่อยอดมาจากภาษาก่อนหน้าคือ "บี" ซึ่งจากข้อมูลของเคน ทอมป์สัน (Ken Thompson) กล่าวว่าภาษาบีเป็นรุ่นที่แยกตัวออกจากภาษาบีซีพีแอลอีกทอดหนึ่งจุดเริ่มต้นของภาษาซีผูกอยู่กับการพัฒนาระบบปฏิบัติการยูนิกซ์อย่างใกล้ชิด ซึ่งเดิมพัฒนาด้วยภาษาแอสเซมบลีบนหน่วยประมวลผลพีดีพี-7โดยริตชีและทอมป์สัน โดยผสมผสานความคิดหลากหลายจากเพื่อนร่วมงาน ในตอนท้ายพวกเขาตัดสินใจที่จะย้ายระบบปฏิบัติการนั้นลงในพีดีพี-11 แต่ภาษาบีขาดความสามารถบางอย่างที่จะใช้คุณลักษณะอันได้เปรียบของพีดีพี-11 เช่นความสามารถในการระบุตำแหน่งที่อยู่เป็นไบต์ จึงทำให้เกิดการพัฒนาภาษาซีรุ่นแรกขึ้นมา
รุ่นดั้งเดิมของระบบยูนิกซ์บนพีดีพี-11ถูกพัฒนาขึ้นด้วยภาษาแอสเซมบลี เมื่อประมาณ พ.ศ. 2516 ภาษาซีเพิ่มชนิดข้อมูล
struct
ทำให้ภาษาซีเพียงพออย่างมีประสิทธิภาพ ซึ่งเคอร์เนลยูนิกซ์ส่วนใหญ่ถูกเขียนด้วยภาษาซี นี้ก็เป็นเคอร์เนลหนึ่งของระบบปฏิบัติการที่พัฒนาด้วยภาษาอื่นนอกเหนือจากภาษาแอสเซมบลี (ระบบอื่นเช่นมัลติกส์เขียนด้วยภาษาพีแอล/วัน เอ็มซีพีสำหรับเบอร์โรส์ บี5000เขียนด้วยภาษาอัลกอล ในปี พ.ศ. 2504)[แก้] ภาษาเคแอนด์อาร์ซี
เมื่อ พ.ศ. 2521 ไบรอัน เคอร์นิกัน (Brian Kernighan) และเดนนิส ริตชี ได้ตีพิมพ์หนังสือเล่มแรกชื่อ เดอะซีโปรแกรมมิงแลงกวิจ (The C Programming Language) [9] ซึ่งเป็นที่รู้จักในกลุ่มโปรแกรมเมอร์ภาษาซีว่า "เคแอนด์อาร์" (K&R อักษรย่อของผู้แต่งทั้งสอง) หนังสือเล่มนี้ทำหน้าที่เป็นข้อกำหนดของภาษาอย่างไม่เป็นทางการมาหลายปี ภาษาซีรุ่นดังกล่าวจึงมักถูกอ้างถึงว่าเป็น ภาษาเคแอนด์อาร์ซี (K&R C) ส่วนหนังสือที่ปรับปรุงครั้งที่สองครอบคลุมมาตรฐานแอนซีซีที่มีขึ้นทีหลัง [1]ภาษาเคแอนด์อาร์ซีได้แนะนำคุณลักษณะหลายประการเช่น
- ไลบรารีไอ/โอมาตรฐาน
- ชนิดข้อมูล
long int
(จำนวนเต็มขนาดยาว) - ชนิดข้อมูล
unsigned int
(จำนวนเต็มไม่มีเครื่องหมาย) - ตัวดำเนินการกำหนดค่าแบบประสมในรูปแบบ =ตัวดำเนินการ (เช่น
=-
) ถูกเปลี่ยนเป็น ตัวดำเนินการ= (เช่น-=
) เพื่อลดปัญหาความกำกวมเชิงความหมาย อย่างเช่นกรณีi=-10
ซึ่งจะถูกตีความว่าi =- 10
แทนที่จะเป็นอย่างที่ตั้งใจคือi = -10
ในภาษาซีรุ่นแรก ๆ เฉพาะฟังก์ชันที่คืนค่าไม่เป็นจำนวนเต็ม จำเป็นต้องประกาศไว้ก่อนการนิยามฟังก์ชันหากมีการเรียกใช้ อีกนัยหนึ่งคือ ฟังก์ชันที่ถูกเรียกใช้โดยไม่มีการประกาศมาก่อน ถือว่าฟังก์ชันนั้นจะคืนค่าเป็นจำนวนเต็มหากค่าของมันถูกใช้งาน