ประวัติภาษา C
ภาษา C เป็นภาษาที่ถูกพัฒนาเพื่อใช้เขียนระบบปฏิบัติการ (Operating System) UNIX โดย Dennis Ritchie จาก AT&T Bell Laboratories ในปี พ.ศ.2515ภาษา C เป็นภาษาที่นิยมใช้ในการเขียนส่วนชุดคำสั่งระบบ (Systems Software) เพราะสามารถใช้งานได้เหมือนภาษาระดับต่ำ เช่น เข้าถึงเลขที่อยู่ (address) ต่าง ๆ ได้ โดยที่ผู้เขียนโปรแกรมไม่จำเป็นต้องรู้ส่วนอุปกรณ์ของเครื่อง (hardware)
ภาษาคอมพิวเตอร์ที่มีอิทธิพลต่อรูปแบบภาษา C
- Algol 60 (Algorithm Language) พัฒนาโดยกลุ่มคนจาก ACM และ GAMM ในปี พ.ศ.2503
 - CPL (Combined Programming Language) พัฒนาที่มหาวิทยาลัย Cambridge และมหาวิทยาลัยลอนดอน ในปี พ.ศ.2506
 - BCPL (Basic Combined Programming Language) พัฒนาโดย Martin Richards ในปี พ.ศ.2510
 - B พัฒนาโดย Ken Thomson จาก Bell Laboratories ในปี พ.ศ.2513
 - C พัฒนาโดย Dennis Ritchie จาก Bell Laboratories ในปี พ.ศ.2515
 
โปรแกรมภาษา C ประกอบด้วย
ชุดคำสั่งแต่ละคำสั่งประกอบด้วยองค์ประกอบของคำสั่ง
คำสั่งอาจประกอบด้วย ชื่อตัวแปร และชื่อฟังก์ชัน (names)- ชื่อประกอบด้วย ตัวอักษร ตัวเลข และ _
 - ชื่อขึ้นต้นด้วยอักษร และจะมีความยาวเท่าไรก็ได้
 
ตัวอย่างชื่อที่ถูกต้อง i , f4, total, user_id
ตัวอย่างชื่อที่ไม่ถูกต้อง %_of_change, 57, 31flavors
ค่าคงที่ (constants) แบ่งเป็น 2 ชนิด คือ ค่าคงที่ชนิดตัวเลข และค่าคงที่ชนิดอักขระ
ค่าคงที่ชนิดตัวเลข
เลขจำนวนเต็ม (integer) ฐานต่าง ๆ ได้แก่- เลขฐานสิบ (decimal) เช่น 63, 999, - 40, - 2
 - เลขฐานแปด (octal) ขึ้นต้นด้วย 0 เช่น 077, 040
 - เลขฐานสิบหก (hexadecimal) ขึ้นต้นด้วย 0X เช่น 0X37, 0XFFFF, 0X9A37
 
- เลขทศนิยมธรรมดา เช่น 1.5, .001, -12.34
 - เลขทศนิยมแบบเลขชี้กำลัง เช่น 1E-5(1* 10-5 ) , 1.23E+2(1.23*102) โดยใช้ E หรือ e แทนด้วยคูณสิบยกกำลัง
 
ค่าคงที่ชนิดอักขระ  
 
  
   แบบอักขระ (character constant) เช่น 'a'  , 'A'แบบสายอักขระ (string constant) เช่น "help" , "happy day"
ช่องว่าง (whitespace) ในการเขียนโปรแกรมภาษา C จะเว้นช่องว่างระหว่างคำสั่งเท่าไรก็ได้ คำสั่งจะอยู่ส่วนไหนของบรรทัดก็ได้
หมายเหตุ (comment)
จะต้องเริ่มด้วย /* จบหมายเหตุด้วย */หมายเหตุไม่ได้เป็นส่วนของคำสั่ง แต่เป็นข้อความที่อาจเขียนเพื่ออธิบายโปรแกรม อธิบายชื่อตัวแปรต่าง ๆ โดยจะใส่หมายเหตุไว้ที่ส่วนไหนของโปรแกรมก็ได้ อาจจะมีหรือไม่มีในโปรแกรมก็ได้ เพราะเป็นการอธิบายเพิ่มเติมเท่านั้น
ตัวดำเนินการ (Operator) ได้แก่
ตัวดำเนินการการคำนวณ (arithmetic operators)
ตัวดำเนินการ 
 | 
  
ความหมาย 
 | 
 
–  
 | 
  
ลบชนิดเอกภาพ (unary 
  minus) 
 | 
 
+ 
 | 
  
บวก 
 | 
 
– 
 | 
  
ลบ 
 | 
 
* 
 | 
  
คูณ 
 | 
 
/ 
 | 
  
หาร 
 | 
 
% 
 | 
  
มอดูโล (modulo operator) หรือเศษเหลือ (remainder) 
 | 
 
ตัวดำเนินการสัมพันธ์ (relational operators)
ตัวดำเนินการ 
 | 
  
ความหมาย 
 | 
 
< 
 | 
  
น้อยกว่า 
 | 
 
<= 
 | 
  
น้อยกว่าหรือเท่ากับ 
 | 
 
> 
 | 
  
มากกว่า 
 | 
 
>= 
 | 
  
มากกว่าหรือเท่ากับ 
 | 
 
== 
 | 
  
เท่ากับ 
 | 
 
!= 
 | 
  
ไม่เท่ากับ 
 | 
 
ตัวดำเนินการตรรกะ (logical operators)
ตัวดำเนินการ 
 | 
  
ความหมาย 
 | 
 
&& 
 | 
  
และ (and) 
 | 
 
|| 
 | 
  
หรือ (or) 
 | 
 
! 
 | 
  
ไม่ (not) 
 | 
 
ตัวดำเนินการอื่น ๆ
ตัวดำเนินการ 
 | 
  
ความหมาย 
 | 
 
[] 
 | 
  
ดรรชนีกำกับของตัวแปรแถวลำดับ (array subscript) 
 | 
 
-> 
 | 
  
ตัวชี้ของตัวแปรโครงสร้าง (structure 
  pointer) 
 | 
 
. 
 | 
  
สมาชิกของตัวแปรโครงสร้าง (structure 
  member) 
 | 
 
++ 
 | 
  
เพิ่มค่าอีกหนึ่ง (increment) 
 | 
 
-- 
 | 
  
ลดค่าลงอีก (decrement) 
 | 
 
(type) 
 | 
  
เปลี่ยนชนิดของข้อมูล 
 | 
 
* 
 | 
  
ตัวดำเนินการโดยอ้อม (indirect) 
 | 
 
& 
 | 
  
เลขที่อยู่ (address) 
 | 
 
sizeof 
 | 
  
ขนาดของตัวถูกดำเนินการ 
 | 
 
?: 
 | 
  
นิพจน์มีเงื่อนไข (conditional 
  expression) 
 | 
 
= 
 | 
  
กำหนดค่า 
 | 
 
, 
 | 
  
จุลภาค 
 |