C語言(C89)32個關(guān)鍵字大體可以分類兩類:
1 C89與類型相關(guān)得20個關(guān)鍵字C做為強類型語言,類型要顯式聲明并在編譯器做檢查。
2 C89與控制結(jié)構(gòu)相關(guān)得12個關(guān)鍵字控制結(jié)構(gòu)實現(xiàn)算法,算法用函數(shù)呈現(xiàn),由函數(shù)實現(xiàn)模塊化。
3 C99、C11新增關(guān)鍵字keyword | Through marco used as | defined in |
restrict (since C11) | 指針變量修飾 | |
inline (since C11) | 內(nèi)聯(lián)函數(shù) | |
_Alignas (since C11) | alignas | stdalign.h |
_Alignof (since C11) | alignof | stdalign.h |
_Atomic (since C11) | atomic_bool,atomic_int,… | stdatomic.h |
_Bool (since C99) | bool | stdbool.h |
_Complex (since C99) | complex | complex.h |
_Generic (since C11) | (no macro) | |
_Imaginary (since C99) | imaginary | complex.h |
_Noreturn (since C11) | noreturn | stdnoreturn.h |
_Static_assert (since C11) | static_assert | assert.h |
_Thread_local (since C11) | thread_local | threads.h |
在C99中,新增了_Bool(關(guān)鍵字)數(shù)據(jù)類型,在stdbool.h頭文件,宏定義bool為-Bool:
#define bool _Bool #define true 1 #define false 0
4 C++新增關(guān)鍵字
C++新增得關(guān)鍵字主要有與類相關(guān)得10個關(guān)鍵字,與數(shù)據(jù)類型相關(guān)(包括類型轉(zhuǎn)換)相關(guān)得20個關(guān)鍵字,與異常處理相關(guān)得5個關(guān)鍵字,與內(nèi)存管理相關(guān)得4個關(guān)鍵字。
sn | C++ | classify | remark |
1 | class | 類相關(guān) | |
2 | explicit | 類相關(guān) | |
3 | friend | 類相關(guān) | |
4 | mutable | 類相關(guān) | |
5 | operator | 類相關(guān) | |
6 | private | 類相關(guān) | |
7 | protected | 類相關(guān) | |
8 | public | 類相關(guān) | |
9 | this | 類相關(guān) | |
10 | virtual | 類相關(guān) | |
11 | bool | 類型相關(guān) | |
12 | char8_t (since C++20) | 類型相關(guān) | |
13 | char16_t (since C++11) | 類型相關(guān) | |
14 | char32_t (since C++11) | 類型相關(guān) | |
15 | consteval (since C++20) | 類型相關(guān) | |
16 | constexpr (since C++11) | 類型相關(guān) | |
17 | decltype (since C++11) | 類型相關(guān) | |
18 | dynamic_cast | 類型相關(guān) | |
19 | FALSE | 類型相關(guān) | |
20 | namespace | 類型相關(guān) | |
21 | nullptr (since C++11) | 類型相關(guān) | |
22 | reinterpret_cast | 類型相關(guān) | |
23 | static_cast | 類型相關(guān) | |
24 | template | 類型相關(guān) | |
25 | TRUE | 類型相關(guān) | |
26 | typeid | 類型相關(guān) | |
27 | typename | 類型相關(guān) | |
28 | using | 類型相關(guān) | |
29 | wchar_t | 類型相關(guān) | |
30 | const_cast | 類型相關(guān) | |
31 | alignas (since C++11) | 內(nèi)存相關(guān) | 內(nèi)存對齊 |
32 | alignof (since C++11) | 內(nèi)存相關(guān) | 內(nèi)存對齊 |
33 | delete | 內(nèi)存相關(guān) | |
34 | new | 內(nèi)存相關(guān) | |
35 | catch | 異常處理 | |
36 | noexcept (since C++11) | 異常處理 | |
37 | static_assert (since C++11) | 異常處理 | |
38 | throw | 異常處理 | |
39 | try | 異常處理 | |
40 | concept (since C++20) | 模板實參約束 | |
41 | requires (since C++20) | 模板實參約束 | |
42 | export | 模板引用 | |
43 | asm | 使用匯編 | |
44 | thread_local (since C++11) | 線程相關(guān) | |
45 | co_await (since C++20) | 協(xié)程相關(guān) | |
46 | co_return (since C++20) | 協(xié)程相關(guān) | |
47 | co_yield (since C++20) | 協(xié)程相關(guān) | |
48 | and | && | 運算符替代寫法 |
49 | and_eq | &= | 運算符替代寫法 |
50 | bitand | & | 運算符替代寫法 |
51 | bitor | | | 運算符替代寫法 |
52 | compl | ~ | 運算符替代寫法 |
53 | not | ! | 運算符替代寫法 |
54 | not_eq | != | 運算符替代寫法 |
55 | or | || | 運算符替代寫法 |
56 | or_eq | |= | 運算符替代寫法 |
57 | xor | ^ | 運算符替代寫法 |
58 | xor_eq | ^= | 運算符替代寫法 |
綜上,數(shù)據(jù)類型系統(tǒng)與控制結(jié)構(gòu)是C語言得核心。
控制結(jié)構(gòu)實現(xiàn)算法,數(shù)據(jù)類型系統(tǒng)構(gòu)造數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)類型得三個方面:
① 值域和內(nèi)存空間需求(sizeof);
② 類型編碼和譯碼規(guī)則(如字符得ASCII碼,整型得補碼,浮點型得階碼、尾碼等,使用編碼規(guī)則編出相關(guān)類型數(shù)據(jù)得限長得二進(jìn)制序列表示,及對限長得二進(jìn)制序列按照相關(guān)類型數(shù)據(jù)得編碼規(guī)則解釋出特定類型得數(shù)據(jù));
③ 一個操作集(operations);
運算符就是對特定數(shù)據(jù)類型操作得定義,如算術(shù)、比較、邏輯運算符等。
5 總結(jié)一下編程語言得核心思想:抽象、分類、分治、模塊化。抽象出事物得本質(zhì)數(shù)據(jù),進(jìn)行分類,利用分治思想抽象出函數(shù),實現(xiàn)模塊化。
人類面對大自然這個復(fù)雜系統(tǒng),如何認(rèn)識它?分科而治,分類研究,雖是無奈之舉,但卻行之有效。
相應(yīng)得,計算機科學(xué)和編程語言也是如此,如上所述得C得數(shù)據(jù)類型系統(tǒng),三類控制結(jié)構(gòu),以及C++得類類型和泛型。
編程語言也和人類語言一樣,都是用來描述名詞、形容詞、動詞得。編程語言得數(shù)據(jù)類型系統(tǒng)可以用來描述名詞、形容詞,控制結(jié)構(gòu)和函數(shù)可以用來描述由動詞描述得功能。更進(jìn)一步,動詞和形容詞得主體自然是名詞,分類抽象成類,也就是面向?qū)ο缶幊谭妒降肅++了。
ref
感謝分享en.cppreference感謝原創(chuàng)分享者/w/
-End-