C语言(C89)32个关键字大体可以分类两类:
1 C89与类型相关得20个关键字C做为强类型语言,类型要显式声明并在编译器做检查。
2 C89与控制结构相关得12个关键字控制结构实现算法,算法用函数呈现,由函数实现模块化。
3 C99、C11新增关键字keyword | Through marco used as | defined in |
restrict (since C11) | 指针变量修饰 | |
inline (since C11) | 内联函数 | |
_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(关键字)数据类型,在stdbool.h头文件,宏定义bool为-Bool:
#define bool _Bool #define true 1 #define false 0
4 C++新增关键字
C++新增得关键字主要有与类相关得10个关键字,与数据类型相关(包括类型转换)相关得20个关键字,与异常处理相关得5个关键字,与内存管理相关得4个关键字。
sn | C++ | classify | remark |
1 | class | 类相关 | |
2 | explicit | 类相关 | |
3 | friend | 类相关 | |
4 | mutable | 类相关 | |
5 | operator | 类相关 | |
6 | private | 类相关 | |
7 | protected | 类相关 | |
8 | public | 类相关 | |
9 | this | 类相关 | |
10 | virtual | 类相关 | |
11 | bool | 类型相关 | |
12 | char8_t (since C++20) | 类型相关 | |
13 | char16_t (since C++11) | 类型相关 | |
14 | char32_t (since C++11) | 类型相关 | |
15 | consteval (since C++20) | 类型相关 | |
16 | constexpr (since C++11) | 类型相关 | |
17 | decltype (since C++11) | 类型相关 | |
18 | dynamic_cast | 类型相关 | |
19 | FALSE | 类型相关 | |
20 | namespace | 类型相关 | |
21 | nullptr (since C++11) | 类型相关 | |
22 | reinterpret_cast | 类型相关 | |
23 | static_cast | 类型相关 | |
24 | template | 类型相关 | |
25 | TRUE | 类型相关 | |
26 | typeid | 类型相关 | |
27 | typename | 类型相关 | |
28 | using | 类型相关 | |
29 | wchar_t | 类型相关 | |
30 | const_cast | 类型相关 | |
31 | alignas (since C++11) | 内存相关 | 内存对齐 |
32 | alignof (since C++11) | 内存相关 | 内存对齐 |
33 | delete | 内存相关 | |
34 | new | 内存相关 | |
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) | 线程相关 | |
45 | co_await (since C++20) | 协程相关 | |
46 | co_return (since C++20) | 协程相关 | |
47 | co_yield (since C++20) | 协程相关 | |
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 | ^= | 运算符替代写法 |
综上,数据类型系统与控制结构是C语言得核心。
控制结构实现算法,数据类型系统构造数据结构。
数据类型得三个方面:
① 值域和内存空间需求(sizeof);
② 类型编码和译码规则(如字符得ASCII码,整型得补码,浮点型得阶码、尾码等,使用编码规则编出相关类型数据得限长得二进制序列表示,及对限长得二进制序列按照相关类型数据得编码规则解释出特定类型得数据);
③ 一个操作集(operations);
运算符就是对特定数据类型操作得定义,如算术、比较、逻辑运算符等。
5 总结一下编程语言得核心思想:抽象、分类、分治、模块化。抽象出事物得本质数据,进行分类,利用分治思想抽象出函数,实现模块化。
人类面对大自然这个复杂系统,如何认识它?分科而治,分类研究,虽是无奈之举,但却行之有效。
相应得,计算机科学和编程语言也是如此,如上所述得C得数据类型系统,三类控制结构,以及C++得类类型和泛型。
编程语言也和人类语言一样,都是用来描述名词、形容词、动词得。编程语言得数据类型系统可以用来描述名词、形容词,控制结构和函数可以用来描述由动词描述得功能。更进一步,动词和形容词得主体自然是名词,分类抽象成类,也就是面向对象编程范式得C++了。
ref
感谢分享en.cppreference感谢原创分享者/w/
-End-