运算符和表达式: 构造计算过程
运算符本身是数学意义上的,在计算机(硬件)则会表现为特定的电路。而外在的表现就是 CPU 的特定指令。
运算符能够对数值执行运算来获取结果,而这个执行运算的“式子”就是表达式,运算符的操作数还可以表达式本身来组成更加复杂的表达式。
运算符分类
预算符根据操作数的个数分为一元操作符,二元操作符以及不多的多元操作符(通常就是三元)。
而根据运算符的类别又分为几个大类。
算数运算符
用于算数运算的, + - * /
是最基本的四则运算。还有一个比较特殊但是大家都支持的求余操作 %
、幂操作 **
、和整除 //
。
算数运算符还有两个比较特殊的一元操作符,+ -
即正负,其中正通常情况下没啥意义。
类 C 语言算数运算符和等号还提供了一种简写形式,允许将赋值运算符和算术运算符结合为一个运算符:
C
i += 3; // 等价于 i = i + 3
i -= 3; // 等价于 i = i - 3
i *= 3; // 等价于 i = i * 3
i /= 3; // 等价于 i = i / 3
i %= 3; // 等价于 i = i % 3
赋值运算符
最简单的就是 = 号,算术运算符能和它结合来构造简写的赋值运算符。
自增运算符/自减运算符
它能够对变量自省进行 +1 和 -1 操作:
关系运算符
关系运算符的结果是布尔值,他是流程控制的核心。关系运算符 > < >= <= == !=
。
逻辑运算符
逻辑运算符的操作数是布尔值,它能够执行布尔运算。通常就是与或非。很多语言中他表示为 && || !
,而有些语言也会使用 AND OR NOT
。
位运算符
这个在现代的编程语言中不常用了,不过如果面向硬件还是很有用的。
~
: 按位取反(一元)&
: 按位与|
: 按位或^
: 按位异或<<
: 左移>>
: 右移
他们都具有
~=
这样的简写形式
其他杂项运算符
每个编程语言都会提供一些自己特有的运算符,不过目前大家互相借鉴也都没啥区别了。
in not in
: 成员检测? :
: 经典的三目运算符
运算符优先级
运算符具有优先级,不过目前主流语言都提供了括号来手动处理优先级。