本文共 3095 字,大约阅读时间需要 10 分钟。
本节书摘来华章计算机《交互式程序设计 第2版》一书中的第2章 ,第2.3.4节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
在程序中,运算符就是编译器用来执行命令和运算的符号,例如“=”用来赋值,“==”用来比较等。运算符有三类:一是数学运算符,用于数学运算,就跟数学课上学到的一样;二是赋值运算符,用来改变变量的值;三是比较运算符,比较两个变量是否相等,谁大谁小。
数学运算符的用法就跟一般数学式子里的一样。用“+”可以把两个变量相加,例如: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的余数是119 % 5 // 结果等于4,19除以5的余数是412 % 11 // 结果等于1,12除以11的余数是119.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 // falsechar(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
转载地址:http://xqzeo.baihongyu.com/