ISO C90 與 ISO C99 之間的差異在那? === ## 數值運算 ### `math.h` > [name=C90 與 C99 都有][color=#CB1B45] p593-597 ### `stdint.h` > [name=只存在 C99][color=#CB1B45] ### `inttype.h` > [name=只存在 C99][color=#CB1B45] ### `complex.h` > [name=只存在 C99][color=#CB1B45] ### `tgmath.h` > [name=只存在 C99][color=#CB1B45] ### `fenv.h` > [name=只存在 C99][color=#CB1B45] ## 文字表示 ![](https://i.imgur.com/PJ2N7Yv.png) :::warning **「很多人都以為字串很簡單,但不對,自從 C99 以後,字串非常複雜。」 - jserv** ::: [<你所不知道的C語言 - 指標篇>](https://hackmd.io/s/HyBPr9WGl#%E9%87%8D%E6%96%B0%E6%8E%A2%E8%A8%8E%E3%80%8C%E5%AD%97%E4%B8%B2%E3%80%8D)裡提到現代 C 語言在字串上分為兩大種類 * byte string: 使用 `char` 作為最小操作單位,每個 char 至少要 8 bits * wide string: 使用 `wchar_t` 作為最小操作單位,以便支援 Unicode 或多國語文 (意味著變動長度的編碼) byte string 是原始 C90 對於 string 的定義,不過 string 這樣的定義在 C99 為了相容多國語言,使用了 `wchar_t` 動態長度編碼 ### universal character names > [name=只存在 C99][color=#CB1B45] ### `wchar.h` > [name=只存在 C99][color=#CB1B45] ### `wctype.h` > [name=只存在 C99][color=#CB1B45] ## 程式流程 ### function designator ## 參考資料 K. N. King, C Programming: A Modern Approach, 2008