《互動式程式設計 第2版》一2 3 4 運算子

2021-09-30 23:12:49 字數 3922 閱讀 1058

在程式中,運算子就是編譯器用來執行命令和運算的符號,例如「=」用來賦值,「==」用來比較等。運算子有三類:一是數**算符,用於數**算,就跟數學課上學到的一樣;二是賦值運算子,用來改變變數的值;三是比較運算子,比較兩個變數是否相等,誰大誰小。

數**算符的用法就跟一般數學式子裡的一樣。用「+」可以把兩個變數相加,例如:

但若是把兩組字串相加就有所不同了,結果是兩組字串接在一起:

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

<=(小於或等於)

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

《互動式程式設計 第2版》一1 3 設計與互動

偉大的工業設計師henry dreyfuss把設計稱為 對人的測量 意思是,設計是理解和分析人類行為的絕佳途徑。如何定義 設計 一詞,這留給別人去想 而我則關注互動設計作為 創作一種工具或方法 的方面,我們使用這種工具或方法完成一些特定的事情。需要完成的事情越具體或特殊,所需的工具就越要精雕細刻,互...

《互動式程式設計 第2版》一2 7 作用域

作用域有時讓人很討厭,由它而起的問題通常難以定位。幸而要避免這樣的問題其實還挺簡單。先看一段processing void setup i 1 print i 我們在第3章會仔細講processing平台,現在你看不懂也沒有關係,直接編譯它。編譯之後processing的控制台視窗會彈出些有趣的訊息...

《互動式程式設計 第2版》一2 7 作用域

作用域有時讓人很討厭,由它而起的問題通常難以定位。幸而要避免這樣的問題其實還挺簡單。先看一段processing void setup i 1 print i 我們在第3章會仔細講processing平台,現在你看不懂也沒有關係,直接編譯它。編譯之後processing的控制台視窗會彈出些有趣的訊息...