参考资料:
C语言中文网:http://c.biancheng.net/
《C语言编程魔法书基于C11标准》
视频教程:C语音深入剖析班(国嵌 唐老师主讲)
C语言中的token
这里的token不是网络通信中的token(令牌),而是用于词法解析的,通过指定一个词位(词的单位)的类别来结构化表示词位。例如
int a = 4 << 3;
这里就有7个token,分别是int、a、=、4、3以及最后的分号。这一行代码中就已经列出了C语言中的常用的几种token,分别是关键字(int)、标识符(a)、字面量(4和3)、操作符(=和<<)、其它标点符号(😉。每个token之间用空白符或标点符号进行分隔。也可以把代码写成int a=4<<3;
,但这里int与a必须用空白符分隔。
C语⾔标准中定义了token和预处理token,分别⽤于在编译时和预编译时的符号解析。token包括关键字、标识符、常量、字符串字⾯量以及标点符号。预处理token主要包括头⽂件名、标识符、预处理数、字符常量、字符串字⾯量、标点符号以及不属于上述符号的每个⾮空⽩字符。
常量
常量是指在程序运行时,该对象所存放的值不允许被修改。也就是不能改的值叫做常量,例如:
#define PI 3.14
const int a = 10;
上面两个都是常量,但第二个是一个伪常量,我们还是可以通过其它手段把它进行修改(虽然不建议,因为不知道会造成什么无法预估的后果)。
变量
变量是指程序在运行时,运行该对象所存放的值被修改。也就是能进行修改值的叫做变量,例如:
int a = 10;
字面量
字⾯量就是指在源代码中⽤于表⽰⼀个固定值的⽂字记号,例如:3,-10,3.14,‘a’,"hello"等都属于字面量。
例如:3、10、-10、20表示整数字面量。
例如:3.14表示浮点数字面量。
例如:"helllo"表示一个字符串字面量。
例如:'a’表示字符字面量。
副作用
对⼀个易变对象的访问、对⼀个对象的修改、对⼀个⽂件的修改,或调⽤⼀个函数,所有这些操作都具有副作⽤。副作⽤就是对执⾏环境中的状态做了改变。
对一个表达式的计算通常包含了对值的计算以及对副作用的初始化。
例:
int a = 1,b = 2,c;
c = a + b;
//这对一个表达式的计算通常包含了对值的计算以及对副作用的初始化
所以说,所谓副作⽤就是在C源代码中的某⼀条表达式在⽬标程序中执⾏时,对当前程序的执⾏状态产⽣了或潜在产⽣改变,那么我们称该表达式产⽣了副作⽤。所谓程序执⾏状态包含了许多元素,⽐如对⽬标程序指令、寄存器的值、存储器中的数据等。