C 運算子 (關係操作符)

2021-10-09 01:37:16 字數 1399 閱讀 3553

現在,讀者已經學會了如何表示資料,接下來我們學習如何處理資料。c語言為處理資料提供了大量的操作,可以在程式中進行算術運算、比較值的大小、修改變數、邏輯的組合等。

關係操作符

這類操作符用於測試運算元之間的各種關係。c提供了所有常見的關係操作符。這些操作符是:

>=         <        <=   !=   ==
這些操作符產生的結果都是乙個整型值,而不是布林值。如果兩端的運算元符合運算元指定的關係,表示式的結果是1,如果不符合,表示式的結果是0。關係操作符的結果是整型值,所以它可以賦值給整型變數,但通常它們用於if或while語句中,作為測值表示式。請記住這些語句的工作方式:表示式的結果如果是0,他被認為是假;表示式的結果如果是任何非零值,他被認為是真。所有關係操作符的工作原理相同,如果操作符兩端的運算元不符合它指定的關係,表示式的結果為0。因此,單純從功能上說,我們並不需要額外的布林型表資料型別。

c用整數來表示布林型值,這直接產生了一些簡寫方法,它們在表示式測值極為常用。

if( expression != 0) …

if( expression ) …

if( expression == 0) …

if( !expression ) …

在每對語句中,兩條語句的功能是相同的。測試 「不等於0」 既可以用關係操作符來實現,也可以簡單地通過測試表示式的值來完成。類似,測試「等於0」也可以通過測試表示式的值,然後再取結果的邏輯反來實現。你喜歡使用哪種形式純屬風格問題,但是在你使用最後一種形式時必須多加小心。由於!操作符的優先順序很高,所以如果表示式內包含了其他操作符,你最好把表示式放在一對括號內。

警告:

如果說下面這個錯誤不是c程式設計師新手常見的錯誤,那麼它至少也是最令人惱火的錯誤。絕大多數其他語言使用=操作符來比較相等性。在c中,你必須使用雙等號==來執行這個比較,單個=號用於賦值操作。

這裡的陷阱是:在測試相等性的地方出現賦值符是合法的,它並非是乙個語法錯誤。這個不幸的特點正是c不具備布林型別的不利之處。這兩個表示式都是合法的整型表示式,所以它們在這個上下文環境中都是合法的。

如果你使用了錯誤的操作符,會出現什麼後果呢?考慮下面這個例子:

x = get_some_value();

if( x = 5)

執行某些任務

x從函式獲得乙個值,但接下來我們把5賦值給x,而不是把x於字面值5進行比較,從而丟失了從函式獲得的那個值。這個結果顯然不是程式設計師的意圖所在。但是,這裡還存在另乙個問題。由於表示式的值x的新值(非零值),所以if語句將始終為真。

你應該養成乙個習慣,當你進行相等性測試比較時,你要檢查一下你所書寫的確實是雙等號。當你發現你程式執行不正常時,趕快檢查一下比較操作符有沒有寫錯,這可能給你節省大量的除錯時間。

位運算子 操作符

按位與 按位或 取反 按位異或 按位異或可以實現兩個變數值的交換,但是並不推薦。a b b a a b 都是雙目運算子,將二進位制向左移動指定位,高位丟棄,低位補0.當為負數時,根據編譯系統的規定補0,或者1.例 0x01 2 3 這裡要考慮運算子的優先順序。的優先順序大於 的優先順序,所以0x01...

運算子以及操作符大全

c的運算子有以下幾類 1.算術運算子 2.關係運算子 3.邏輯運算子 4.位運算子 5.賦值運算子 及擴充套件賦值運算子 6.條件運算子 7.逗號運算子 8.指標運算子 和 9.求位元組數運算子 sizeof 10.強制型別轉換 運算子 型別 11.分量運算子 12.下標 運算子 13.其他 如 函...

操作符 (邏輯運算子)

操作符 關係操作符 關係操作符 關係操作符 比較兩個變數之間的關係 大於 大於或等於 小於 小於或等於 是否相等 是否不等 邏輯運算子 長路與 和 短路與 長路或 和 短路或 取反 異或 邏輯運算子 public class count 長路或和短路或 無論長路或還是短路或 兩邊的運算單元都是布林值...