diff --git a/Chapter2 C与C++/2.1 基础语法.md b/Chapter2 C与C++/2.1 基础语法.md index 20d4a72..86076c6 100644 --- a/Chapter2 C与C++/2.1 基础语法.md +++ b/Chapter2 C与C++/2.1 基础语法.md @@ -181,11 +181,50 @@ ashort++; ``` # 2.1.7 符号常量 +有时候我们希望用一个符号来代替某个字面常量,这看起来很像一个不允许改变值的变量,我们用 const 关键字来修饰它,使之成为符号常量。例如: + +```cpp +const long cnvar0=666; +const char cnvar1='C'; +``` + +一个符号常量只能在定义时被初始化,并且不能够被再次赋值。例如下面做法是错的: + +```cpp +const int cnint = 256; +cnint++; +``` # 2.1.8 运算符 +c语言运算符主要包括赋值运算、算数运算、逻辑运算、位运算、比较运算等。运算符主要涉及到优先级,结合性y以及前加加和后加加的问题。例如: + +```cpp +int val=5, mask=0b0100; +printf("val=%d.\n", val++); // val=5. +printf("val=%d.\n", ++val); // val=7. + +if(val<=10 && val>=5) +{ + printf("True\n"); +} + +val &= mask; // val=4. +``` + # 2.1.9 宏 +通过使用宏,可以指导c编译器做一些特别的工作。例如使用define关键字来做一些替代的工作: +```cpp +#define BASE_ADDR (0x25) +#define REG1_OFFSET (0x01) +#define REG2_OFFSET (0x02) + +printf("Register 1 addr=0x%x.\n", BASE_ADDR+REG1_OFFSET); +printf("Register 2 addr=0x%x.\n", BASE_ADDR+REG2_OFFSET); +``` +这称作宏替换。宏替换可以提高程序的可移植性,例如上述例子中,只要修改 #define BASE_ADDR (0x25) 一处便可以修改所有寄存器的地址。 + # 2.1.10 指针 指针变量的长度与总线位宽有关,如32位机则指针变量长度为4,64位机为8。 diff --git a/Chapter2 C与C++/2.10 类、继承和多态.md b/Chapter2 C与C++/2.10 C++对C的扩展.md similarity index 100% rename from Chapter2 C与C++/2.10 类、继承和多态.md rename to Chapter2 C与C++/2.10 C++对C的扩展.md diff --git a/Chapter2 C与C++/2.11 static和const成员.md b/Chapter2 C与C++/2.11 类、继承和多态.md similarity index 100% rename from Chapter2 C与C++/2.11 static和const成员.md rename to Chapter2 C与C++/2.11 类、继承和多态.md diff --git a/Chapter2 C与C++/2.12 虚函数和接口.md b/Chapter2 C与C++/2.12 static和const成员.md similarity index 100% rename from Chapter2 C与C++/2.12 虚函数和接口.md rename to Chapter2 C与C++/2.12 static和const成员.md diff --git a/Chapter2 C与C++/2.13 程序的内存结构.md b/Chapter2 C与C++/2.13 虚函数和接口.md similarity index 100% rename from Chapter2 C与C++/2.13 程序的内存结构.md rename to Chapter2 C与C++/2.13 虚函数和接口.md diff --git a/Chapter2 C与C++/2.14 程序的加载、运行和关闭.md b/Chapter2 C与C++/2.14 程序的内存结构.md similarity index 100% rename from Chapter2 C与C++/2.14 程序的加载、运行和关闭.md rename to Chapter2 C与C++/2.14 程序的内存结构.md diff --git a/Chapter2 C与C++/2.15 上机题.md b/Chapter2 C与C++/2.15 程序的加载、运行和关闭.md similarity index 100% rename from Chapter2 C与C++/2.15 上机题.md rename to Chapter2 C与C++/2.15 程序的加载、运行和关闭.md diff --git a/Chapter2 C与C++/2.5 数组.md b/Chapter2 C与C++/2.16 上机题.md similarity index 100% rename from Chapter2 C与C++/2.5 数组.md rename to Chapter2 C与C++/2.16 上机题.md diff --git a/Chapter2 C与C++/2.6 结构体与联合体.md b/Chapter2 C与C++/2.5 高级宏操作 similarity index 100% rename from Chapter2 C与C++/2.6 结构体与联合体.md rename to Chapter2 C与C++/2.5 高级宏操作 diff --git a/Chapter2 C与C++/2.7 高级指针.md b/Chapter2 C与C++/2.6 数组.md similarity index 100% rename from Chapter2 C与C++/2.7 高级指针.md rename to Chapter2 C与C++/2.6 数组.md diff --git a/Chapter2 C与C++/2.8 面向过程与面向对象.md b/Chapter2 C与C++/2.7 结构体与联合体.md similarity index 100% rename from Chapter2 C与C++/2.8 面向过程与面向对象.md rename to Chapter2 C与C++/2.7 结构体与联合体.md diff --git a/Chapter2 C与C++/2.9 C++对C的扩展.md b/Chapter2 C与C++/2.8 高级指针.md similarity index 100% rename from Chapter2 C与C++/2.9 C++对C的扩展.md rename to Chapter2 C与C++/2.8 高级指针.md diff --git a/Chapter2 C与C++/2.9 面向过程与面向对象.md b/Chapter2 C与C++/2.9 面向过程与面向对象.md new file mode 100644 index 0000000..e69de29