A. c語言的運算符的優先順序是什麼
1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。
( )圓括弧
[ ]下標運算符號
->指向結構體成員運算符
.結構體成員運算符
B. c語言運算優先順序
優先順序就是當表達式中有多個運算符時,先計算誰,後計算誰。打個比方,在四則運算中乘除的優先順序就高於加減。
但是C語言中的運算符除了加減乘除還有很多,我們也沒必要將所有運算符的優先順序都記住,這里列出來各個運算符的優先順序表,實在需要用到的時候查一下表就行了。而且實際上在編程的時候需要考慮優先順序的情況很少,因為如果不知道優先順序高低的話,加一個括弧就行了,因為括弧的優先順序是最高的。
比如:
k = (j > i) && (8 == i)
根據優先順序的高低,完全可以寫成:
k = j > i && 8 == i
第一種寫法是比較提倡的,因為一看就知道先計算誰後計算誰,節省了大家的時間還不容易出錯。而且加圓括弧也是一種編程規范,因為程序不只是寫給自己看。
此外運算符還有「目」和「結合性」的概念。「目」就是眼睛的意思,一個運算符需要幾個數參與就歸為「幾目」。C語言中大多數運算符都是雙目的,比如 和 運算符;也有單目和三目的,單目運算符如邏輯非 ( !1 );三目運算符即條件運算符,?:也是C語言中的唯一一個三目運算符。
說完了「目」的概念,再來說一說「結合性」。先來煮個栗子:
1 + 2 × 3 / 4
上式中乘法和除法的優先順序相同,但計算的時候是從左往右,所以乘和除的結合性就是從左往右,so easy!
C語言中大多數運算符的結合性都是從左往右,只有三個運算符是從右往左的。一個是單目運算符,另一個是三目運算符,還有一個就是雙目運算符中的賦值運算符 。運算符的「結合性」也不需要死記硬背,在不斷使用中就記住了。
C. c語言中運算符有哪幾種,優先順序順序是怎樣
C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。
運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(3)c語言算術的優先順序別擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
D. c語言算術運算符優先順序
LS的說的對。1樓和2樓的說法不敢苟同。
雙目是兩個兩個操作數的運算符號,而不是是兩個符號比如++,單目是一個操作數的運算符,所以同理3目的運算符號是:?(條件表達式)。其他的我持保留態度,%,
+,
-,
*,
/等注意都是雙目運算還包括大部分移位和邏輯運算的符號,單目的運算還包括++,
--,
&(注意這個是取地址),*(這個是間接定址),!(非運算),兩張圖都或多或少有錯誤,建議你記憶優先順序的時候記住乘除的優先順序比+-高,括弧的優先順序最高就是了,需要優先計算的地方加括弧即可。
還有順便說句,請不要為了一點分忽悠初學者好么?
E. C語言運算符優先順序順序
C語言運算符優先順序順序如下所示:
(5)c語言算術的優先順序別擴展閱讀
一個表達式可以包含多個運算符。在這種情況下,運算符的優先順序決定表達式的哪部分被處理為每個運算符的操作數。例如,按照運算規則,表達式中*、/、以及 % 的優先順序比 + 和 - 高。如下列表達式:
a - b * c
相當於 a-(b*c)。如果想讓操作數以不同的方式組合在一起,則必須使用括弧:
(a - b) * c
如果一個表達式中的兩個操作數具有相同的優先順序,那麼它們的結合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術運算符和操作數的組合方式是從左到右,賦值運算符則是從右到左。
F. C語言運算符優先順序
C語言運算符優先順序?
int m=1,n=1,a=1,b=1,c=1;(m=a>b)&&(n=a>b);
printf("%d%d",m,n);//0;1but,Why?
這是因為a>b不成立, m的值為0,而後面的是&&運算,所以不再計算,而n的值仍為1
======
m---m;_______這是不能通過編譯的。
若是int m=3;
m=--m; //m先自減,然後賦值給m,即m=2
printf("%d",m);// 2 but,Why?
G. c語言中的運算符優先順序高低是什麼意思
運算符用於執行程序代碼運算,會針對一個以上操作數項目來進行運算。例如:2+3,其操作數是2和3,而運算符則是「+」。
運算符的優先順序是從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
(7)c語言算術的優先順序別擴展閱讀
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
指針最優,單目運算優於雙目運算。如正負號。先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7。邏輯運算最後結合。
H. C語言中30多個運算符的優先順序順序
32多個運算符的優先順序順序如下
1、auto
聲明自動變數
2、short
聲明短整型變數或函數
3、int
聲明整型變數或函數
4、long
聲明長整型變數或函數
5、float
聲明浮點型變數或函數
6、double
聲明雙精度變數或函數
7、char
聲明字元型變數或函數
8、struct
聲明結構體變數或函數
9、union
聲明共用數據類型
10、enum
聲明枚舉類型
11、typedef
用以給數據類型取別名
12、const
聲明只讀變數
13、unsigned
聲明無符號類型變數或函數
14、signed
聲明有符號類型變數或函數
15、extern
聲明變數是在其他文件正聲明
16、register
聲明寄存器變數
17、static
聲明靜態變數
18、volatile
說明變數在程序執行中可被隱含地改變
19、void
聲明函數無返回值或無參數,聲明無類型指針
20、if
條件語句
21、else
條件語句否定分支(與 if 連用)
22、switch
用於開關語句
23、case
開關語句分支
24、for
一種循環語句
25、do
循環語句的循環體
26、while
循環語句的循環條件
27、goto
無條件跳轉語句
28、continue
結束當前循環,開始下一輪循環
29、break
跳出當前循環
30、default
開關語句中的「其他」分支
31、sizeof
計算數據類型長度
32、return
子程序返回語句(可以帶參數,也可不帶參數)循環條件
(8)c語言算術的優先順序別擴展閱讀
1、==和!=優先順序相等,其他四個關系運算符的優先順序相等,且前者的優先順序低於後者。
如2==3>1 應該先計算3>1。
2、關系運算符中,若優先順序相同,則「從左往右」結合。
如4>3<2,先計算4>3
3、關系運算符中的優先順序小於算術運算符。
如3+4>8-2 相當於(3+4)> (8-2)
I. C語言算數與邏輯運算符的優先順序
運算有優先順序,正如加減混合運算中的先乘除、後加減。如:
3+8×2=3+16=19
而不能:3+8×2=11×2=22
數學上用到的運算有三種:
一種是「數學運算」(+-×÷乘方開方對數三角函數等),它們的優先順序最高;
一種是「關系運算」(>≥==≤<=≠等),它們的優先順序低於數學運算。
如:3+6>5×2,相當於(3+6)>(5×2),9>10,結果是:不成立(假)。
而不能:3+6>5×2,3+1×2,3+3,結果是6。
一種是邏輯運算(與&&或丨丨非!等),它們的運算優先順序比關系運算還要低。比如:
13>2*5&&10!=5+4
相當於(13>2*5)&&(10!=5+4)
(13>10)&&(10!=9)
1&&1
1
而且,這些運算順序(優先順序)跟數學上的順序是一致的。
J. 運算符優先順序由高到低的順序是什麼
c語言運算符優先順序從高到低的順序依次如下:
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
序列點
序列點是程序執行中的一個點,在這個點之前,前面的表達式的求值和副作用已經完成,而後面表達式的求值和副作用還沒有發生。C 標準定義以下序列點:
(1)運算符&&;運算符||;逗號運算符,;條件運算符?:的第一個子表達式求值結束後。
(2)函數調用運算符()中對所有實參數完成求值之後。
(3)每個完整表達式結束時。完整表達式包括變數初始化表達式,表達式語句的表達式,return 語句的表達式,if 或 switch 語句中的控製表達式,while 或 do語句的控製表達式,for 語句的所有三個表達式。
(4)標准庫函數返回之前,標准輸入輸出函數格式化轉換說明符關聯動作之後,標准查找函數和排序函數在調用比較函數之前和之後及參數傳遞之後。
由序列點的定義可知,與運算符&&;或運算符||;逗號運算符,;條件運算符?:等 4 個運算符的左操作數屬於前一個序列點,右操作數屬於後一個序列點,因此,這 4 個運算符的左操作數的求值要先於右操作數完成。