首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言全景指南:歷史演進、關鍵字分類、運算符優先級表

     編輯:關於C語言

C 語言全景指南:歷史演進、關鍵字分類、運算符優先級表

C 語言歷史演進時間軸

年份里程碑
1950sALGOL 60(A 語言)奠定現代程式語言基礎
1963CPL(Combined Programming Language)誕生
1967Martin Richards 簡化 CPL → BCPL
1970Ken Thompson 基於 BCPL 設計 B 語言,編寫首版 Unix
1972-73Dennis Ritchie 基於 B 語言設計 C 語言
1977Ritchie 發表《可移植的 C 語言編譯程序》
1978K&R 經典《The C Programming Language》出版("K&R C")
1989ANSI X3.159-1989 發布(C89 / ANSI C)
1990ISO/IEC 9899:1990(C90)國際標準化
1999ISO/IEC 9899:1999(C99)新增內聯、布爾、復數等
2011ISO/IEC 9899:2011(C11)新增泛型、原子操作、線程庫

C 語言優缺點速覽

優點:簡潔緊湊、運算符豐富、數據類型靈活、可直接操作硬件地址、目標代碼高效、移植性強、表達力強。
缺點:封裝性弱(無類/私有成員)、語法限制寬鬆(隱式轉換、數組越界不檢查)、對初學者門檻較高。

關鍵字完整分類表(C89 32個 + C99 5個 + C11 1個 = 38個)

一、數據類型關鍵字

A. 基本類型(5):void、char、int、float、double

B. 類型修飾(4):short、long、signed、unsigned

C. 複雜類型(5):struct、union、enum、typedef、sizeof

D. 存儲類別(6):

  • auto:自動變量(棧上,默認)
  • static:靜態存儲期、文件內部鏈接(修飾函數時)
  • register:建議寄存器分配(現代編譯器多忽略)
  • extern:外部鏈接聲明
  • const:只讀語義(cv 特性之一)
  • volatile:易變語義,阻止優化(cv 特性之二)

E. C99 新增(3):_Bool(布爾)、_Complex(復數)、_Imaginary(純虛)

F. C11 新增(1):_Generic(泛型選擇)

G. C99 功能關鍵字(2):inline(內聯函數)、restrict(指針別名優化提示)

二、流程控制關鍵字

A. 跳轉(4):return、continue、break、goto

B. 分支(5):if、else、switch、case、default

C. 循環(3):for、do、while

  • for(init; cond; step) body:執行順序 init→cond→body→step→cond...
  • do body while(cond):至少執行一次
  • while(cond) body:前置判斷

C 語言 34 種運算符優先級與結合性完整表

優先級由高到低,同組同級,空行分隔級別

()  []  ->  .                    // 後綴/結構成員,左結合
!  ~  ++  --  -  (type)  *  &  sizeof  // 一元運算,右結合
*  /  %                          // 乘除模,左結合
+  -                             // 加減,左結合
<<  >>                           // 移位,左結合
<  <=  >  >=                     // 關係,左結合
==  !=                           // 相等性,左結合
&                                // 位與,左結合
^                                // 位異或,左結合
|                                // 位或,左結合
&&                               // 邏輯與,左結合
||                               // 邏輯或,左結合
?:                               // 條件運算,右結合
=  +=  -=  *=  /=  %=  <<=  >>=  &=  ^=  |=  // 賦值,右結合
,                                // 逗號運算,左結合

常見易混淆點提示

  • sizeof 是運算符而非函數,參數可為類型或表達式(不求值)
  • ++i 與 i++ 的副作用順序點問題(C 標準未定義行為陷阱)
  • 邏輯運算符 &&、|| 具備短路求值特性
  • 條件運算符 ?: 唯一三目運算符,右結合:a?b:c?d:e 等價 a?b:(c?d:e)
  • 逗號運算符求值順序左到右,整個表達式值為最右子表達式值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved