《交互式程序设计 第2版》一2.3.4 运算符

简介:

本节书摘来华章计算机《交互式程序设计 第2版》一书中的第2章 ,第2.3.4节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3.4 运算符

在程序中,运算符就是编译器用来执行命令和运算的符号,例如“=”用来赋值,“==”用来比较等。运算符有三类:一是数学运算符,用于数学运算,就跟数学课上学到的一样;二是赋值运算符,用来改变变量的值;三是比较运算符,比较两个变量是否相等,谁大谁小。
数学运算符的用法就跟一般数学式子里的一样。用“+”可以把两个变量相加,例如:

int apples = 5;
int moreApples = apples + 3; // moreApples等于8。

但若是把两组字符串相加就有所不同了,结果是两组字符串接在一起:

string first = "John"; 
string second = "Brown"; 
string full = first+second; // full等于JohnBrown

这样的结果是由所谓“运算符重载”造成的。这个话题有点高级,这本书里不作介绍,有兴趣的读者可以参考第17章列出的编程书目或是上网查阅。
其他简单的数学运算符有“-”(减)、“*”(乘)和“/”(除),还有“%”(取模)。
取模就是左边的数除以右边的数所得的余数。下面是一些例子:

8 % 2 // 结果等于0,8被2除无余数 
17 % 2 // 结果等于1,17除以2的余数是1
19 % 5 // 结果等于4,19除以5的余数是4
12 % 11 // 结果等于1,12除以11的余数是1
19.0 % 5 // 结果等于4.0,因为是对浮点变量做取模运算

赋值运算符从右侧开始起作用,也就是说,运算符把右侧变量的值赋给左侧变量,例如:

int age  =  6;

“=”把左边变量的值设为6。跟“=”类似,以下运算符也用来设置左侧变量的值。
+=
把右侧的值加到左侧变量的原值上再赋给左侧变量:

int height = 6; 
    height += 1; // height等于7 
    height += 10; // height等于17

-=
把右侧的值从左侧变量的原值减掉再赋给左侧变量:

int size = 16; 
    size -= 8; // size等于8 
    size -= 6; // size等于2

++和--
把左侧变量的值加1或减1:

int hearts = 2; 
    hearts++; // hearts值为3 
    hearts--; // hearts变为2 
    hearts--; // hearts变为1

*= 或 /=
道理跟“+=”和“-=”一样,用右侧的值乘或者除左侧变量的原值再赋给左侧:

int i = 15; 
    i /= 3; // i等于5 
    int j = 20; 
    j /= 2; // j等于10 
    float k = 100.0; 
    k /= 3.333333; // k等于30.000004 
    float m = 100.0; 
    m /= '2'; // 不建议这样做 
    i *= 4; // i等于20 
    m *= 0.5; // m原值为2.0,现在等于1.0

值的比较对编程来讲十分重要,尤其是在一些控制语句里。2.4节会讲控制语句,现在先来熟悉一下各种比较运算符。我们接下来会经常遇到它们。在不同的编程语言里,比较运算符略有不同。比较运算就是判断变量的值是否相等,谁大谁小。
==(相等)
比较两者是否相等,例如:

5 == 4; // false 
'a' == 'a' // true 
(12 / 3) == (2 * 2); // true 
4.1 == 4 // false
char(102) == int('f') // true, 因为ASCII里 'f' 对应值102
"duck" == 0.002 // false, 该操作无效
!=(不相等)

判断两者是否不相等,例如:

3 != 1 //true, 它们的确不相等
'B' != 'b' // 也是true, 它们不相等
>(大于)

判断左侧的值是否大于右侧的值,跟数学课上教的是一样的:

4 > 3 // true 
5 > 192901.2 //false 
"fudge" > 8 // false, 该操作无效 
<(小于)

判断左侧的值是否小于右侧的值,仍然跟数学课上教的一样:

3 < 2 // false 
'g' < 106 //  'g' 在ASCII里的值为103,所以结果为true 
-100 < 100 // true 
>=(大于或等于)

判断左侧的值是否大于或等于右侧的值,数学课也是这么教的:

3 >= 3 // true, 因为它们相等
0 >= -0.001 // 0大于-0.001, 因此结果是true 
'?' >= 'h' // false, 因为 '?'的ASCII 码是63 ,而'h'是104 
4 >= 28 // false 
"happy" >= "sad" // false, 该操作无效
<=(小于或等于)

判断左侧的值是否小于或者等于右侧的值,嗯,大家数学应该都还不错:

13.001 <= 13.001 // true, 它们相等
0 <= -0.001 // 0 比-0.001大, 因此结果为false 
'!' <= '7' // true, 因为 '!'的 ASCII码是33,而'7'是55 
&&

判断左侧的语句和右侧的语句是否同时为true:

(4 > 3) && ('f' > '1') // true 
((5 * 2) == 10) && ((6 - 3) != 4) // true 
(5 < 10) && (2 > 4) // false, 左侧为true但右侧不是
||

判断左边的语句和右边的语句中是否至少有一个为true:

(4 < 3) || ('f' > 'e') // true, 尽管左侧为false,但右侧为true
((5 * 2) == 10) || ((6 - 3) != 4) // 两侧都为true 
('b'=='g') || (2 > 4) // false, 两侧都为false

对于以上的比较和判断,你可能还心存不解,他们到底用来做什么。别急,在控制语句里,它们就能一展身手了。表2-2列出了上述所有运算符及其用法。
表2-2:运算符及其用法

算符    用法
+,-,*,/     加,减,乘,除
%    取模,返回除法运算的余数
=    赋值,把右侧的值赋给左侧变量
+=,-=,*=,/=    数学赋值;用右侧的值加、减、乘、除左侧变量原值,并把结果赋给左侧变量
++    向左侧变量加1
--    从左侧变量减1
==    比较左右两侧的值,如果相等,表达式结果为true
!=    比较左右两侧的值,如果不相等,表达式结果为true
>,>=    比较左右两侧的值,如果左侧值大于或不小于右侧值,表达式结果为true
<,<=    比较左右两侧的值,如果左侧值小于或不大于右侧值,表达式结果为true
&&    比较左右两侧表达式的结果,如果两侧都为true,则结果为true
||    比较左右两侧表达式的结果,只要其中一侧为true,则结果为true
相关文章
|
Python 程序员 Shell
带你读《Python 程序设计与问题求解(原书第2版)》之二:软件开发、数据类型和表达式
本书是为计算机科学专业程序设计课程编写的教材,选用流行且易于教学的Python语言,主要涵盖五个方面的内容:编程基础,包括数据类型、控制结构、 算法设计等;面向对象编程,包括基础原则和应用方法;数据和信息处理,包括字符串、数组、文件、列表等;软件开发生命周期,包括大量案例研究;编程实践,包括数字和文本处理、事件驱动编程、图形图像处理、网络通信等。书中的每个新概念只在解决问题时才被引入,重视培养良好的编程习惯,适合所有程序设计初学者阅读。