跳转到内容

区分运算符、操作数、表达式、语句

不建议新手对这几个名词纠结太多。代码写得多了、见过各种情形了,再去尝试理解它们。

运算符和操作数

运算符(operators)是一种指令(instructions),用于对变量和值执行指定的操作(actioins)。

运算符执行的操作作用到的对象(也就是上面提到的“变量和值”),称为操作数(operands)。注意区分这里所说的对象和C++里的类对象,这里的对象是一个抽象的概念,表示某个独立的一般的事物。

表达式

运算符和操作数的组合称为表达式(expression)。

表达式可能会返回一个结果,可以将其用作另一个运算符的操作数,从而可以创建更大的表达式。

表达式可以作为语句的一部分。

表达式会计算并产生一个值。例如,会被求值为。

表达式有一个确定的类型(如 int,double,bool 等),这取决于表达式的操作数和运算符。

某些表达式在求值时会产生副作用(如赋值表达式会改变变量的值)。

语句

语句通常以分号结束。

语句表示一段完整的指令或操作。

语句可以包含一个或多个表达式。

例子

int myInteger{42};
myInteger = 10;
// `=` 是运算符,`myInteger` 和 `10` 是操作数
// `=` 是二元运算符(binary operator),有两个操作数
--myInteger;
// `--` 是一元运算符(unary operator),只有一个操作数
int myInteger{42};
myInteger = 10; // `myInteger = 10` 是表达式,可以更具体地称为赋值表达式,它的值是等号右侧的`10`(所以可以这样写:a = b = 10),它的副作用是改变变量 myInteger 的值(从原来的42改为10)。
--myInteger; // `--myInteger` 是表达式
int myInteger{42};
// `int myInteger{42};` 是一个声明并初始化语句,定义了一个变量并给它赋值。
// `int myInteger;` 是一个声明语句,声明了一个 int 类型的变量myInteger。
// {42} 是初始化器
myInteger = 10;
// `myInteger = 10;` 是一个赋值语句
--myInteger;
// `--myInteger;` 也是一个语句