在《1.1程序的结构》中,我们把表达式定义为一个可以计算值的数学实体。然而数学实体这个概念是有些模糊的,更精确地说,表达式是用来计算值的常量、变量、函数、和运算符的结合体。
常量
常量是直接插入到源码中的固定值(硬编码),比如5或者3.14159。常量的值就是自身,看下面这个例子:
#include
int main()
{
int x = 2; // x 是变量, 2 是常量
std::cout << 3 + 4; // 3 + 4 是一个表达式, 3 和 4 是常量
std::cout << "Hello, world!"; // "Hello, world" 也是一个常量
}
常量、变量与常量称为运算对象,运算对象提供了表达式求值所需的数据。
运算符
现在表达式中只有运算符是没有提到过的了,运算符的作用是告诉表达式如何组合这些数据以获得新的结果,比如在表达式“3+4”中,“+”是加法运算符,和我们在数学中使用的含义相同。
我想我们已经对一些常见的运算符比如加+、减-、乘*、除/非常熟悉了。赋值符号=也是一个运算符。某些运算符由多个符号组成,比如等于“==”,用于比较两个数是否相等。
注意:新手常会犯的一个错误就是将等于“==”写成赋值“=”,而这样的错误通常不会造成语法错误,也就是说编译器不会报错,可以顺利编译成功,但程序的运行结果往往是错的,如果发生这类错误,不妨检查一下有没有将“==”写成“=”。“==”是用来比较两者是否相等的,“=”是用来赋值的。
操作符分为三类:
- 单目运算符——只能操作单个运算对象。比如区地址符号&,后面会讲到。
- 双目运算符——可以操作两个运算对象,比如“+”,用于表达式3+4。
- 三目运算符——可以操作三个运算对象,C++中只有一个,“?:”,表达式1? 表达式2: 表达式3,它的意思后面再提。
注意某些运算符有不知一个意义。比如“-”,作单目运算符时表示取反,作双目运算符时表示减号。
总结
这里提到的只是运算符的冰山一角,后续的课程我们会更深入的了解它。