常量和变量都可以参与加减乘除运算,例如1+1
、hour-1
、hour * 60 + minute
、minute/60
等。这里的+ - * /称为运算符(Operator),而参与运算的常量和变量称为操作数(Operand),上面四个由运算符和操作数所组成的算式称为表达式(Expression)。
前面讲过打印语句和赋值语句,现在我们定义:在任意表达式后面加个;号也是一种语句,称为表达式语句。例如:
hour * 60 + minute;
这是个合法的语句,但这个语句在程序中起不到任何作用,把hour的值和minute的值取出来加乘,得到的计算结果却没有保存,白算了一通。再比如:
- int total_minute;
- total_minute = hour * 60 + minute;
这个语句就很有意义,把计算结果保存在另一个变量total_minute
里。事实上等号也是一种运算符,称为赋值运算符,赋值语句就是一种表达式语句,等号的优先级比+和*都低,所以先算出等号右边的结果然后才做赋值操作,整个表达式total_minute = hour * 60 + minute
加个;号构成一个语句。
如果一个表达式中出现多个等号,不是从左到右计算而是从右到左计算,例如:
- int total_minute, total;
- total = total_minute = hour * 60 + minute;
计算顺序是先算hour * 60 + minute
得到一个结果,然后算右边的等号,就是把hour * 60 + minute
的结果赋给变量total_minute
,这个结果同时也是整个表达式total_minute = hour * 60 + minute
的值,再算左边的等号,即把这个值再赋给变量total
。同样优先级的运算符是从左到右计算还是从右到左计算称为运算符的结合性(Associativity)。+ - * /是左结合的,等号是右结合的。