日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言的int型运算符,C语言运算符

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言的int型运算符,C语言运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本詞條缺少概述圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!

C語言運算符是說明特定操作的符號[1]

,它是構造C語言表達式的工具[2]

。C語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都為運算符處理。除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用于完成特殊任務的運算符,比如位運算符。

中文名

C語言運算符

外文名

Operators of C programming language

屬????性

計算機程序語言作????用

構造C語言表達式的工具

分????類

算術運算符、關系運算符與邏輯運算符

途????徑

控制語句

C語言運算符分類和級別

編輯

C語言的運算符主要用于構成表達式,同一個符號在不同的表達式中,其作用并不一致。下面按計算的優先順序,分別說明不同作用的表達式。需要特別指出,在C語言標準中,并沒有結合性的說法。[1]

相同優先級運算符,從左至右依次運算。注意后綴運算優先級高于前綴。因此++i++應解釋為++(i++)。

而與或非的運算優先級都不一樣,因此a && b || b && c解釋為(a && b) || (b && c)

合理使用優先級可以極大簡化表達式。

C語言運算符基本表達式 1級

基本表達式(Primary expressions),主要是用于運算符之間,做為運算數。

標識,常量,字符串文字量,優先級提升表達式最優先執行。

優先級提升表達式是指圓括號包圍的表達式,如“( expression )”

C語言運算符后綴表達式 2級

postfix-expression [ expression ],數組下標運算。

postfix-expression ( argument-expression-list),函數調用,括號內的參數可選。

postfix-expression . identifier,成員訪問,

postfix-expression -> identifier,成員訪問,->號之前應為指針。

postfix-expression ++,后綴自增

postfix-expression --,后綴自減

( type-name ) { initializer-list }

( type-name ) { initializer-list , } 復合初始化,C99后新增。例如

int*?a?=?(int[])?{?1,?2,?3?};

//等價于

int?unamed[]?=?{1,?2,?3};?//unamed表示一個不可見的變量名。

int*?a?=?unamed;

C語言運算符單目/一元運算 3級

++ unary-expression 前綴自增

-- unary-expression 前綴自減

unary-operator cast-expression 單目轉型表達式, 包括 取地址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。

sizeof unary-expression 求類型長度,對表達式求類型長度

sizeof ( type-name ) 求類型長度

C語言運算符強制類型表達式 4級

( type-name ) cast-expression,強制表達式成為type-name指定的類型。

C語言運算符乘法表達式 5級

“ * ” 乘法運算符;“ / ”除法運算符;“ % ” 取余運算符。

C語言運算符加法運算符 6級

“ + ”加法運算符;“ - ”減法運算符。

C語言運算符移位運算符 7級

<< 左移運算符;>> 右移運算符。

C語言運算符關系運算符 8級

、>=關系運算符。

C語言運算符相等運算符 9級

“ == ”等于運算符;“ != ”不等于運算符。

C語言運算符位與運算符 10級

“ & ”按位與運算符

C語言運算符位異或運算符 11級

“ ∧ ”按位異或運算符(Bitwise exclusive OR operator)。

C語言運算符位或運算符 12 級

“ | ”按位或運算符(Bitwise inclusive OR operator)。

C語言運算符邏輯與運算符 13級

“&&”邏輯與運算符。

C語言運算符邏輯或運算符 14 級

“ || ”邏輯或運算符。

C語言運算符三元條件運算符 15級

C語言運算符賦值運算符 16 級

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算符。

C語言運算符逗號運算符 17級

[pre]C 語言中,逗號(,)也可以是運算符,稱為逗號運算符(Comma Operator)。逗號運算符可以把兩個以上(包含兩個)的表達式連接成一個表達式,稱為逗號表達式。其一般形式為:

子表達式1, 子表達式2, ..., 子表達式n

例如:

a + b, c = b, c++

逗號運算符的優先級是所有運算符中級別最低的,通常配合 for 循環使用。逗號表達式最右邊的子表達式的值即為逗號表達式的值。上例中,c++ 的值(c 自增之前的值)即為該表達式的值。

逗號運算符保證左邊的子表達式運算結束后才進行右邊的子表達式的運算。也就是說,逗號運算符是一個序列點,其左邊所有副作用都結束后,才對其右邊的子表達式進行運算。因此,上例中,c 得到 b 的值后,才進行自增運算。

C語言運算符優先級

編輯

優先級:C語言中,運算符的運算優先級共分為15 級。1 級最高,15 級最低。 在表達式中,優先級較高的先于優先級較低的進行運算。而在一個運算量兩側的運算符 優先級相同時,則按運算符的結合性所規定的結合方向處理。

結合性:C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左后右。如有表達式x-y+z 則y 應先與“-”號結合,執行x-y 運算,然后再執行+z 的運算。這種自左至右的結合 方向就稱為“左結合性”。而自右至左的結合方向稱為“右結合性”。最典型的右結合 性運算符是賦值運算符。如x=y=z,由于“=”的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。

優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。

所有的優先級中,只有三個優先級是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結合。

具有最高優先級的其實并不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。

其次是單目運算符,所有的單目運算符具有相同的優先級,因此在我認為的 真正的運算符中它們具有最高的優先級,又由于它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

另外在C語言里,沒有前置后置之分,因為++ -- 是右結合所以右側優先運算,表現為 "操作數后置優先級比較高" 的假象,前置和后置的區分是因為運算符重載而后加入C++的

接下來是算術運算符,*、/、%的優先級當然比+、-高了。

移位運算符緊隨其后。

其次的關系運算符中,< <= > >=要比 == !=高一個級別,不大好理解。

所有的邏輯操作符都具有不同的優先級(單目運算符除外,!和~)

邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。

跟在其后的&&比||高。

在C語言中,只有4個運算符規定了運算方向,它們是&&、| |、條件運算符及賦值運算符。

&&、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如 a = 0 && b; &&運算符的左邊位0,則右邊表達式b就不再判斷。

在條件運算符中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。

賦值表達式則規定先對右邊的表達式求值,因此使 a = b = c = 6;成為可能。

口訣注釋

優先級等級口訣

圓方括號、箭頭一句號, 自增自減非反負、針強地址長度,

乘除,加減,再移位,

小等大等、等等不等,

八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗。

其中“,”號為一個等級分段。

優先級等級注釋

“圓方括號、箭頭一句號”指的是第1級的運算符。其中圓方括號很明顯“()、[]”,箭頭 指的是指向結構體成員運算符“->”,句號 指的是結構體成員運算符“.” ;

“自增自減非反負、針強地址長度”指的是第2級的運算符。其中 非 指的是邏輯運算符“!”,反 指的是按位取反運算符“~”,負 指的是負號運算符“-”,針 指的是指針運算符“*”,強 指的是強制類型轉換運算符,地址 指的是地址運算符“&”,長度 指的是長度運算符“sizeof ”;

“乘除,加減,再移位”移位指的是左移運算符“<>”,其中除法還包括了 取余運算符“%”;

“小等大等、等等不等” 指的是第6級到第7級的運算符:和>=,等等指的是等于運算符==,不等指的是不等于運算符!=

“八位與,七位異,六位或”其中 八位與 指的是第8級的 按位與 運算符“&”,七位異 指的是第9級的按位異或運算符“^”,六位或 指的是第10級的按位或運算符“|”;

“五與,四或”指的是第11級、第12級的邏輯與運算符“&&”和邏輯或運算符“||”;

“三疑,二賦,一真逗”指的是第13級到第15級的運算符。其中,三疑指的是條件運算符“?:” (三有雙重含義:即指優先級別是三,它的運算符類型也是三目,疑也取“?”之意),二賦 指的是賦值運算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗 指的是第15級的“,”運算符,真字只是為了語句需要罷了。

由于C語言的運算符優先級與C++的不完全一樣(主要是增加了幾個運算符),所以這個口訣不能完全實用于C++.但是應該能夠兼容,大家可以比較一下他們的區別應該就能夠很快掌握C++的優先級的!

應用舉例

1、賦值運算符:a=5;

a=b=0;

第一個賦值語句把5賦給變量a;第二個賦值語句的意思是把0同時賦值給兩個變量。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算,先b=0,然后a=b。

2、復合賦值運算符:a=1;a+=3;

上面第二個賦值語句等價于a=a+3;即a=4。

3、算術運算符:Area=Height*Width;num=num1+num2/num3-num4;

第一個賦值語句Height和Width相乘結果賦給變量Area;第二個賦值語句先完成num2與num3的整除運算,然后與num1相加,再減去num4,結果賦給num。運算符運算順序先算乘除再算加減。單目正和單目負最先運算。

4、邏輯運算符:a=1,b=1;

a||b-1;

因為a=1為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時后面的表達式就不會再計算了。

5、關系運算符:if(a>0)...

如果a>0,則執行if語句中的內容,否則退出。

6、條件運算符:a=(b>0)?b:-b;

當b>0時,a=b;當b不大于0時,a=-b;其實上面的意思就是把b的絕對值賦值給a。

7、逗號運算符:b=2,c=7,d=5;

a=(++b,c--,d+3);

有三個表達式,用逗號分開,所以最終的值應該是最后一個表達式的值,也就是d+3=8,所以a=8。

8、位邏輯運算符

包括:1。&位與符 2。|位或符 3。^位異或符 4。~位取反符

以操作數12為例。位運算符將數字12視為1100。位運算符將操作數視為位而不是數值。數值

可以是任意進制的:十進制、八進制或十六進制。位運算符則將操作數轉化為二進制,并相應地返回1或0。

位運算符將數字視為二進制值,并按位進行相應運算,運算完成后再重新轉換為數字。例如:

表達式10&15表示(1010 & 1111),它將返回表示1010的值10。因為真真得真,或者是11得1,同位全是1結果也是1

表達式10|15表示(1010 | 1111),它將返回表示1111的值15。假假得假。全零得零。

表達式10^15表示(1010 ^ 1111), 它將返回表示0101的值5。此時是同性相斥,相同的就為假。

表達式~10表示(~1010),它將返回表示0101的值 5。此號好理解,按位取反。

參考資料

1.

ISO.Programming languages -- C:ISO/IEC 9899,1999

2.

King, K.N 著,呂秀鋒 譯.C語言程序設計:現代方法.北京:人民郵電出版社,2007,2009重印:33

總結

以上是生活随笔為你收集整理的c语言的int型运算符,C语言运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。