2012年1月24日星期二

TJS教學---comparison operator,比較運算子

(k ゚∀゚)<我們經常要比較一些數值,例如a是否大於b,或者是a是否等於b,這些比較會決定我們將會有什麼行動,再來一些現實例子,例如當溫度低的時候,就多穿一點衣服,或者是當成績高於某個分數的時候,您就合格了。

(k ゚∀゚)<TJS提供了一些叫比較運算子(或者是關係運算子,relational operator)的運算子,用來比較兩者的值,以下是一些比較運算子。

運算子用途例子(a=1,b=1.2,c=1.0)
==等於a==c是1
!=不等於a!=b是1
>大於a>b是0
<小於a<b是1
>=大於或等於a>=b是0
<=小於或等於a<=b是1
===等於(包括資料型態)a===c是0
!==不等於(包括資料型態)a!==c是1

為什麼結果是0或1,不是true或false嗎?>( ゚ω゚ s)

(k ゚∀゚)<在吉里吉里的條件式裡,所有非零的數值都被視為true,而零就被視為false。實際上KAG也有相同的概念。

不過我在KAG時明明有用過true和false,那TJS怎麼會沒有true和false?>( ゚ω゚ s)

(k ゚∀゚)<雖然吉里吉里裡的確有true和false這兩個字,不過說到底它們也只是數值為1和0的常數,true的值是1,false的值是0。

(k ゚∀゚)<看看以下關於比較運算子的範例。

var a=1<2;
System.inform(a);

(k ゚∀゚)<由於1<2這句是成立,1<2會傳回1,即是true,所以吉里吉里將顯示1。

(k ゚∀゚)<另外不要跟一個等號"="的指定運算子混淆,兩個等於符號(==)的是比較運算子,若果寫上a==1是比較a是否等於1,而a=1是把1這個值指定給變數a。

我有一個問題,到底兩個等於(==)和三個等於(===)有什麼分別,大家都不是"等於"嗎?>( ゚ω゚ s)

(k ゚∀゚)<兩個等於(==)是比較兩者數值上是否相同,而三個等於(===)除了比較數值之外,還會比較兩者的資料型態,例如1和1.0雖然數值上一樣,不過一個是整數,另一個是實數,所以用三個等於(===)來比較的話,將會得到false。

(k ゚∀゚)<再看看以下的範例。

var a=(int)System.inputString("","請輸入一個整數","");;
var b=(a<12)+1;
System.inform(b);

(k ゚∀゚)<當a小於12時,a<12就會傳回1,否則就是傳回0。以下是表格寫了不同情況下a和b的值。

情況1情況2
a1015
a<1210
(a<12)+121
b21

(k ゚∀゚)<今次介紹到這裡,下次再見。

沒有留言:

發佈留言