C 使用布林操作符

2022-08-28 07:57:09 字數 2270 閱讀 1532

布林操作符(boolean operator)是求值結果要麼為true,要麼為false的一種操作符。c#提供了幾個非常有用的布林操作符,其中最簡單的是not(求反)操作符,它使用感嘆號(!)來表示。!操作符求乙個布林值的反值。在上例中,假如變數areyouready的值為true,那麼表示式!areyouready的求值結果就是false。

理解相等和關係操作符

兩個更常用的布林操作符是相等(==)和不等(!=)操作符。利用這兩個二元操作符,可以判斷乙個值是否與相同型別的另乙個值相等。表1展示了這些操作符是如何工作的,其中以乙個名為age的int變數為例。

表1 布林操作符

與上述兩個操作符密切相關的是關係操作符(relational operator)。利用這些操作符,可以判斷乙個值是否小於或大於同型別的另乙個值。表2展示了如何使用這些操作符。

表2 關係操作符

注意 不要混淆相等操作符(==)與賦值操作符(=)。像x==y這樣的**會比較x與y,如果兩個值相同,就會返回true。相反,像x=y這樣的**會將y的值賦給x。

理解條件邏輯操作符

c#還提供了另外兩個布林操作符:邏輯and(邏輯與)操作符,它使用&&來表示;以及邏輯or(邏輯或)操作符,它使用||來表示。這兩個操作符統稱為條件邏輯操作符(conditional logical operator)。它們的作用是合併不同的布林表示式,以構成乙個更大的表示式。這兩個二元操作符與相等及關係操作符的相似之處在於,它們的結果也是true或false。不同之處在於,它們操作的值(運算元)本身就必須是true或false。

只有作為運算元的兩個布林表示式都為true的前提下,&&操作符的求值結果才為true。例如,只有在percent的值大於或等於零,而且percent的值小於或等於100的前提下,以下語句才會將true值賦給validpercentage:

bool validpercentage;

validpercentage = (percent >= 0) && (percent &<= 100);

提示 新手常犯的乙個錯誤是在合併兩個測試的時候,只對percent變數命名一次,就像下面這樣:

percent >= 0 && &<= 100 // 這個語句不能編譯

使用圓括號有助於避免這種型別的錯誤,同時也有助於澄清表示式。例如,可以對比一下以下兩個表示式:

validpercentage = percent >= 0 && percent &<= 100

validpercentage = (percent >= 0) && (percent &<= 100)

兩個表示式返回的是同乙個值,因為操作符&&的優先順序低於》=和&<=。然而,第二個表示式採取更清晰易懂的方式表明了它的目的。

兩個操作符任何乙個為true,操作符||的求值結果都為true。使用操作符||,我們可以判斷兩個條件中是否有任何乙個成立。如果percent的值小於零,或者percent的值大於100,以下語句會將值true賦給invalidpercentage:

bool invalidpercentage;

invalidpercentage = (percent &< 0) || (percent > 100);

短路求值

操作符&&和||都具備一項名為短路求值(short circuiting)的特性。有時,根本沒有必要將兩個運算元都求值出來。例如,假定操作符&&的左運算元求值為false,那麼整個表示式的結果肯定是false,不管右運算元的值是什麼。類似地,如果操作符||的左運算元求值為true,那麼整個表示式的結果肯定是true。在這些情況下,操作符&&和||將繞過對右側的布林表示式的求值。下面是一些例子:

(percent >= 0) && (percent &<= 100)

在這個表示式中,假如percent的值小於零,那麼操作符&&左側的布林表示式會求值為false。該值意味著整個表示式的結果肯定為false,無論右側的表示式是什麼。所以,不會對右側的表示式進行求值。

(percent &< 0) || (percent > 100)

在這個表示式中,如果percent的值小於零,操作符||左側的布林表示式會求值為true。該值意味著整個表示式的結果肯定為true。所以,不會對右側的表示式進行求值。

如果能小心地設計表示式來使用條件邏輯操作符,就可以避免通過不必要的工作來提公升**的效能。將計算容易、簡單的布林表示式放到條件邏輯操作符的左邊,將較複雜的表示式放到右邊。在許多情況下,程式並不需要求值更複雜的表示式。

操作符優先順序和結合性總結

表3總結了迄今為止學過的所有操作符的優先順序和結合性。相同類別的操作符具有相同的優先順序。乙個更高類別中的操作符優先於較低類別中的操作符。

表3 操作符小結

布林操作符

邏輯與 blue true 與boolean作用相同 邏輯與是短路操作符,如果第乙個引數為物件,則結果為第二個引數。有乙個運算元是null,返回null。有乙個運算元是undefined返回undefined。有乙個運算元是nan返回nan。var o new object o 1 1 o fals...

js布林操作符小記

為了提高學習效率斷了下網,沒想到這麼渣渣網斷了之後就連不上了 廢話少說,開始正題。重新看紅皮書,重點記一下布林操作符。布林操作符有 一,邏輯非 先說說 非是布林操作符中唯一乙個會把所有資料型別轉換為布林型別的。拿幾個特殊值為例 如果運算元為 null,則 null 返回 true 如果運算元為 un...

c 操作符使用

乙個下午的時間總算弄清楚c 各個操作符的使用方法,這個地方一直弄不清楚,今天終於有空把它弄清晰了 一 位操作符 1.操作符 按位與 運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5 可寫算式...