C# 布爾邏輯
19世紀(jì)中葉的英國(guó)數(shù)學(xué)家喬治?布爾(George Boole)為布爾邏輯奠定了基礎(chǔ)。
例如,考慮下述情形:要根據(jù)變量myVal的值是否小于10來(lái)確定是否執(zhí)行代碼。為此, 需要確定語(yǔ)句“myVal小于10” 的真假,即需要了解比較的布爾結(jié)果。
布爾比較需要使用布爾比較運(yùn)算符(也稱為關(guān)系運(yùn)算符),如表所示。
運(yùn)算符 | 類(lèi) 別 | 示例表達(dá)式 | 結(jié)果 |
== | 二元 | varl = var2 = = var3; | 如果var2等于var3, varl的值就是true,否則 為 false |
r= | 二元 | varl = var2 != var3; | 如果var2不等于var3, varl的值就是true,否 則為fclse |
< | 二元 | varl = var2 < var3; | 如果var2小于var3, varl的值就是true,否則 為 fhise |
> | 二元 | varl = var2 > var3; | 如果var2大于var3, varl的值就是true,否則 為 fiilse |
<= | 二元 | varl = var2 <= var3; | 如果var2小于或等于var3,varl的值就是true, 否則為fclse |
>= | 二元 | varl = var2 >= var3; | 如果var2大于或等于var3, varl的值就是true, 否則為fclse |
在上表中,varl都是bool類(lèi)型的變量,var2和var3則可以是不同類(lèi)型。
在代碼中,可以對(duì)數(shù)值使用這些運(yùn)算符:
bool isLessThanlO; isLessThanlO = myVal < 10;
如果myVal存儲(chǔ)的值小于10,這段代碼就給isLessThanlO賦予true值,否則賦予felse值。
也可以對(duì)其他類(lèi)型使用這些比較運(yùn)算符,例如字符串:
bool isBenjamin;
isBenjamin = myString == "Benjamin";
如果myString存儲(chǔ)的字符串是“Benjamin”,isBenjamin的值就為true。
也可以對(duì)布爾值使用這些運(yùn)算符:
bool isTrue;
isTrue = myBool == true;
但只能使用=和!=運(yùn)算符。
注意:
錯(cuò)誤地認(rèn)為當(dāng)vall<val2為fiilse時(shí),vail >val2 true,則會(huì)導(dǎo)致一個(gè)常見(jiàn)的代碼錯(cuò)誤....如果‘val.l. = val2, 那么前兩條語(yǔ)句’都是'fclsL ?
&和丨運(yùn)算符也有兩個(gè)類(lèi)似的運(yùn)算符,稱為條件布爾運(yùn)算符。
運(yùn)算符 | 類(lèi)別 | 示例表達(dá)式 | 結(jié)果 |
&& | 二元 | varl = var2 && var3; | 如果var2和var3都是true,varl的值就是true,否則為false (邏輯與) |
II | 二元 | varl = var21| var3; | 如果vai2或var3是true(或兩者都是),varl的值就是tiue,否 則為&ke (邏_ |
這些運(yùn)算符的結(jié)果與&和丨完全相同,但得到結(jié)果的方式有一個(gè)重要區(qū)別:其性能更好。兩者都是檢查第 —個(gè)操作數(shù)的值(上表中的var2),如果已經(jīng)能判斷結(jié)果,就根本不必處理第二個(gè)操作數(shù)(上表中的var3)。
如果&&運(yùn)算符的第一個(gè)操作數(shù)是false,就不爾要考慮第二個(gè)操作數(shù)的值_f,因?yàn)闊o(wú)論第二個(gè)操作數(shù)的值是什么,其結(jié)果都是false。同樣,如果第一個(gè)操作數(shù)是true, ||運(yùn)算符就返回true,不必再考慮第二個(gè)操作數(shù)的值。
點(diǎn)擊加載更多評(píng)論>>