c語言運算符號

2021-03-01 程式設計師陌然

本詞條由「科普中國」科學百科詞條編寫與應用工作項目 審核 。

C語言運算符號指的是運算符號。C語言中的符號分為10類:算術運算符、關係運算符、邏輯運算符、位操作運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求字節數運算符和特殊運算符。

注意事項

運算符號的優先級

總個數

34 種

相關概念

優先級、結合性

種類

算術運算符

用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。

關係運算符

用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。

邏輯運算符

用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

位操作運算符

參與運算的量,按二進位位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

賦值運算符

用於賦值運算,分為簡單賦值(=)、複合算術賦值(+=,-=,*=,/=,%=)和複合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

條件運算符

這是一個三目運算符,用於條件求值(?:)。

逗號運算符

用於把若干表達式組合成一個表達式(,)。

指針運算符

用於取內容(*)和取地址(&)二種運算。

求字節數運算符

用於計算數據類型所佔的字節數(sizeof)。

特殊運算符

有括號(),下標[],成員(→,.)等幾種。

運算符號的優先級

編輯

1、優先級1級

結合方向 左結合(自左至右)

( ) 圓括號

[ ] [1] 下標運算符

-> 指向結構體成員運算符

. 結構體成員運算符 [1] (請注意它是一個實心圓點)

2、優先級2級

結合方向 右結合(自右至左)單目運算符

! 邏輯非運算符

~ 按位取反運算符

++ 自增運算符

-- 自減運算符

- 負號運算符

(類型) 類型轉換運算符

* 指針運算符

& 地址與運算符

sizeof 長度運算符

3、優先級3級

結合方向 左結合 雙目運算符

* 乘法運算符

/ 除法運算符

% 取餘運算符

4、優先級4級

結合方向 左結合 雙目運算符

+ 加法運算符

- 減法運算符

5、優先級5級

結合方向 左結合 雙目運算符

<< 左移運算符

>> 右移運算符

6、優先級6級

結合方向 左結合 雙目運算符

<、<=、>、>= 關係運算符

7、優先級7級

結合方向 左結合 雙目運算符

== 等於運算符 (判斷)

!= 不等於運算符(判斷)

8、優先級8級

結合方向 左結合 雙目運算符

& 按位與運算符

9、優先級9級

結合方向 左結合 雙目運算符

^ 按位異或運算符

10、優先級10級

結合方向 左結合 雙目運算符

| 按位或運算符 舉例:0xfe|0xef 即為1111 1110 與1110 1111按位或運算則答案為:1111 1111 即0xff。

11、優先級11級

結合方向 左結合 雙目運算符

&& 邏輯與運算符

12、優先級12級

結合方向 左結合 雙目運算符

|| 邏輯或運算符

13、優先級13級

結合方向 右結合 三目運算符

? : 條件運算符

14、優先級14級

結合方向 右結合 雙目運算符

= 賦值運算符

+ = 加後賦值運算符 如s+=1表示s=s+1

- = 減後賦值運算符 如s-=1表示s=s-1

* = 乘後賦值運算符

/ = 除後賦值運算符

% = 取模後賦值運算符

< <= 左移後賦值運算符

>>=右移後賦值運算符

&= 按位與後賦值運算符

^=按位異或後賦值運算符

|= 按位或後賦值運算符

15、優先級15級

結合方向 左結合

, 逗號運算符

C語言發展

編輯

現代計算機編程領域當中的 C語言自出現到發展成熟經歷了較長的一段時間, 也經歷了一次次的發展變革。C語言最初是從BCPL計算機語言中衍生而來,早在 1937 年,劍橋大學的一位研究人員利用當時現有的知識對 CPL計算機語言進行了簡化, 這樣就出現了性能更為優越的 BCPL計算機語言。人類對於新型技術的追求從未止步,即使 BCPL計算機語言在當時已經較為優秀,但人們還是在不斷地對其進行優化,於是在 1970 年,在美國的貝爾實驗室,研究人員再一次對 BCPL計算機語言進行了優化, 並成功的以 BCPL作為基礎語言,研究出了計算機 B語言,這一研究成果讓人類和計算機之間的溝通更近了一步,也有助於計算機編程領域的發展。在1972年,美國的貝爾實驗室再一次對計算機語言進行了優化,並且在這次優化當中,以計算機 B語言作為基礎,創造出了一種新型的計算機語言, 並在對這種新型計算機語言進行分析的時候以 BCPL語言的第二個字母進行了命名,這也就成為了現代計算機編程領域使用頻率較高的計算機 C語言,並在不斷運用中得以完善。為了推廣 UNIX作業系統,1977年 DennisM.Ritchie發表了不依賴於具體機器系統的 C語言編譯文本《可移植的 C語言編譯程序》。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。ANSI於1983年夏天,在 CBEMA的領導下建立了 X3J11 委員會,目的是產生一個 C標準。X3J11在 1989年末提出了一個他們的報告[ANSI89],後來這個標準被 ISO接受為 ISO/IEC9899- 1990。1990 年,國際標準化組織 ISO(International Organization for Standards)接受了 89ANSIC為 ISOC的標準(ISO9899- 1990)。1994 年,ISO修訂了 C語言的標準。1995 年,ISO對 C90 做了一些修訂,「1995 基準增補 1(ISO/IEC/9899/AMD1:1995)」。1999 年,ISO又對C語言標準進行了修訂,在基本保留原來 C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對 C++ 中的一些功能,命名為ISO/IEC9899:1999。 [2]

有關概念

編輯

優先級

優先級是用來標識運算符在表達式中的運算順序的,在求解表達式的值的時候,總是先按運算符的優先次序由高到低進行操作。

結合性

當一個運算對象兩側的運算符優先級別相同時,則按運算符的結合性來確定表達式的運算順序。關於結合性的概念在其他高級語言中是沒有的,這是C語言的特點之一。在標準C語言的文檔裡,對操作符的結合性並沒有做出非常清楚的解釋。一個滿分的回答是:它是仲裁者,在幾個操作符具有相同的優先級時決定先執行哪一個。C語言也將 34 種運算符規定了不同的結合性。大多數運算符結合方向是「自左至右」,即:先左後右,也叫「左結合性」,例如 a-b + c,表達式中有-和+兩種運算符,且優先級相同,按先左後右結合方向,先圍繞減號結合,執行 a-b 的運算,再圍繞加號結合,完成運算(a-b) + c。除了左結合性外,C 語

言有三類運算符的結合方向是從右至左,也叫「右結合性」,即:單目運算符、條件運算符、以及賦值運算符。著重強調一點,無論是左結合性,還是右結合性,是針對兩個相鄰的優先級相同的運行符言(不是表達中的運算對象),運算符是決定左右的基準點,先以前面的運算符(即位置上處於左邊的運算符)構造運算,就是左結合,反之,就是右結合。與運算符及表達式相關的重要概念,除運算符優先級和結合性外,C 標準定義的副作用(Side Effects)和序列點(Sequence Point)也是不可或缺的兩個概念。 [3]

副作用

C標準對副作用的定義是,訪問易變(Volatile)型變量、修改變量、修改文件、以及調用執行前述操作的函數都是副作用。副作用可以簡單理解成,作為表達式求值過程中的副產品,某些變量的值發生了修改。

序列點

序列點是程序執行中的一個點,在這個點之前,前面的表達式的求值和副作用已經完成,而後面表達式的求值和副作用還沒有發生。C 標準定義以下序列點:

(1)運算符&&;運算符||;逗號運算符,;條件運算符?:的第一個子表達式求值結束後;

(2)函數調用運算符()中對所有實參數完成求值之後;

(3)每個完整表達式結束時。完整表達式包括變量初始化表達式,表達式語句的表達式,return 語句的表達式,if 或 switch 語句中的控制表達式,while 或 do語句的控制表達式,for 語句的所有三個表達式;

(4)標準庫函數返回之前,標準輸入輸出函數格式化轉換說明符關聯動作之後,標準查找函數和排序函數在調用比較函數之前和之後及參數傳遞之後.

由序列點的定義可知,與運算符&&;或運算符||;逗號運算符,;條件運算符?:等 4 個運算符的左操作數屬於前一個序列點,右操作數屬於後一個序列點,因此,這 4 個運算符的左操作數的求值要先於右操作數完成 [4] 。



相關焦點

  • c語言之符號的技巧
    C語言中的單引號用來表示字符常量C語言中的雙引號用來表示字符串常量『a』表示字符常量在內存中佔1個字節
  • C符號陷阱
    在程序中,符號就是程序的一個基本信息單元。而組成符號的字符序列就不同,同一組字符序列在某個上下文環境中屬於一個符號,而另一個上下問環境中可能屬於完成不用的另一個符號。1.1  =不同於==在C語言中符號=作為賦值運算,符號==作為比較,一般而言賦值運算相對於比較運算出現得更頻繁,因此字符較少的符號=就被賦予了更常用的含義——賦值操作。此外,在C語言中賦值符號被作為一種操作符對待,因而重複進行賦值操作(如a=b=c)可以很容易地書寫,並且賦值操作還可以被嵌入到更大的表達式中。
  • [GO語言基礎] 四.算術運算、邏輯運算、賦值運算、位運算及編程練習
    因此從今天開始從零講解Golang程式語言,一方面是督促自己不斷前行且學習新知識;另一方面是分享與讀者,希望大家一起進步。前文介紹了Golang的變量、數據類型和標識符知識,並通過編程練習進行提升。這篇文章將介紹運算,包括算術運算、邏輯運算、賦值運算、位運算及編程練習。
  • C語言丨關於位運算的使用,只需掌握這4個簡單示例!
    位運算是指按二進位進行的運算。在系統軟體中,常常需要處理二進位位的問題。C語言提供了6個位操作運算符。這些運算符只能用於整型操作數,即只能用於帶符號或無符號的char,short,int與long類型。
  • C語言定義運算
    1.1.1  數據類型在C\C++
  • c語言數據運算超範圍要注意
    只有整形才能做「模」int a=12345; a=a%10;2.如果你想做普通的四則運算。那肯定是浮點數的運算。整形的除法不是我們平時的除法,它是捨去了餘數,即小數部分。例如:int a=1; a=a/10; 結果會得到0;因為只有商被保留下來。
  • C語言中的運算符
    一、前言在嵌入式開發中,我們一般選用C語言作為開發語言。一個主要的原因在於C語言提供了大量的運算符,比如我們對硬體的操作一般涉及到對位的操作,而C語言就提供了這樣的運算符,這是其他語言不具備的。二、C語言運算符有哪些C語言有大量的運算符,可大致分為以下幾類:括號與結構體符號、單目、算術、移位、關係、位、邏輯、三目、賦值、逗號。括號與結構體符號:括號包括()、[],結構體符號指的是結構體成員引用時的符號「->」、「.」
  • C語言編程習慣心得
    >c語言的命名編程時給變量或者函數起的名字就是標識符,就好比每一位同學都有姓名,姓名就是這位同學的標識符。C語言的常量可以分為直接常量和符號常量。取餘運算中注意:該運算只適合用兩個整數進行取餘運算,如:10%3 = 1;而10.0%3則是錯誤的;運算後的符號取決於被模數的符號,如(-10)%3 = -1;而10%(-3) = 1。註:C語言中沒有乘方這個運算符,也不能用×,÷等算術符號。
  • c語言——基本語法
    c語言由Dennis MacAlistair Ritchie創始,是普適性最強的一種電腦程式編輯語言,它不僅可以發揮出高級程式語言的功用,還具有彙編語言的優點。本期將簡潔地介紹c的基本語法。二、scanf輸入格式:scanf(格式控制,地址表列);例如:scanf("a=%f", &a);注意:輸入的內容要與引號內的內容一致輸入輸出中的「%+格式符」控制了輸入輸出的格式,兩者的格式符相似:d,表示有符號的十進位整數u,表示無符號的十進位整數
  • C語言基礎知識整理
    用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。
  • 基於linux平臺的c語言語言教學針與數組
    大家好,我是陌塵,從今天開始,我會更新全套的c語言教學,從頭開始,一步一步,跟著我學,你也可以成為程序大神c語言是七十年代初問世的,現在已經成為luax下的最流行的高級語言,luax大部分語言都是用c語言寫的
  • C語言應用—簡易的計算器
    我們在此之前,我們學習了C語言的大多數的技能,今天,我們就用這些技能來編譯一個簡易的計算器的編程。在此之前,我們需要知道計算器需要什麼,例如加減乘除等,我們要使用什麼變量,當然了雙精度整形變量無疑是最佳的選擇。
  • C語言中的運算符和表達式
    4、符號運算符「+」(正號)不改變操作數的值及符號, 「-「(負號)可用於得到一個數的相反數。符號運算符、自增和自減運算符為一元運算符。7、括號()與數學上的括號一樣,能改變運算的順序。8、算術表達式使用算術運算符將運算對象連接起來、符合C語言語法規則的式子。
  • 三天學會C語言編程 | 中篇
    在C語言中變量的名稱可以是英文字符、下劃線和數字,但只能以英文字符和下劃線開頭,不能以數字開頭。另外,C語言中變量名稱是區分大小寫的,也就是var_name和var_Name是兩個不同的變量。我們知道在C語言中數據是有不同的類型的,同樣變量也有不同的類型。
  • C語言中「c=a+b」,這種結構合理嗎?
    C語言會同意一些"令人震驚"的結構,下面的結構是合法的嗎,我們來看看幾個例子。 c = a+++b; 以下代碼是合法的嗎,咋的一看不禁有這樣的疑問?
  • C語言入門基礎知識大全
    用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。、任何一個c語言程序都必須包括以下格式:main() { }——這是c語言的基本結構,任何一個程序都必須包含這個結構。
  • 「C語言從入門到入土」必備C語言基礎筆記整理
    一、C語言1、什麼是C語言?C語言是人寫機器看的一種語言。C語言是高級語言中的低級語言。C語言貼近硬體。C語言的入門學習比較簡單。彙編語言——>B語言——>C語言2、C語言的特性首先C語言就是你的女朋友。無論你讓它幹什麼,它絕對不會自己找到方法。
  • C語言入門教程運算符
    1.運算符概述運算符是一種編譯器執行特定的數學或邏輯操作的符號。乘號、除號因為ASCII符號中沒有與數學中相對應的符號,所以使用星號表示乘號,使用斜線表示除號。C語言中增加了一個求模運算符,是用來取餘的。需要注意的是,求模運算符的兩個操作數必須是整型。
  • 單片機c語言教程:C51運算符和表達式
    如果你是個DELPHI 編程愛好者或是DELPHI程式設計師,你對變量的定義也許習慣了DELPHI 的關鍵字,如 int 類型常會用關鍵字Integer來定義,在用 單片機c語言時你還想用回這個的話,你能這樣寫:本文引用地址:http://www.eepw.com.cn/article/170888.htmtypedef int integer;
  • 學員問:C語言入門要掌握哪些基礎知識?
    01C語言程序的結構認識用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。; /*把兩個數之和賦值給整型變量sum*/ }重點說明—1、任何一個c語言程序都必須包括以下格式:main() { }——這是c語言的基本結構,任何一個程序都必須包含這個結構。