『壹』 c語言裡面的運算符優先順序如何
C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
各等級運算符如下:
(以下說明中,對傳統的1級和2級做了細化,1和2對應傳統1級,3和4對應傳統2級,所以細化說明共有17級。)
1、基本表達式 1級
基本表達式(Primary expressions),主要是用於運算符之間,做為運算數。
標識,常量,字元串文字量,優先順序提升表達式最優先執行。
優先順序提升表達式是指圓括弧包圍的表達式,如「( expression )」
2、後綴表達式 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後新增。
3、單目/一元運算 3級
++ unary-expression 前綴自增
-- unary-expression 前綴自減
unary-operator cast-expression 單目轉型表式式, 包括 取地址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。
sizeof unary-expression 求類型長度,對表達式求類型長度
sizeof ( type-name ) 求類型長度
4、強制類型表達式 4級
( type-name ) cast-expression,強製表達式成為type-name指定的類型。
5、乘法表達式 5級
「 * 」 乘法運算符;「 / 」除法運算符;「 % 」 取余運算符。
6、加法運算符 6級
「 + 」加法運算符;「 - 」減法運算符。
7、移位運算符 7級
<< 左移運算符;>> 右移運算符。
8、關系運算符 8級
<、<=、>、>=關系運算符。
9、相等運算符 9級
「 == 」等於運算符;「 != 」不等於運算符。
10、位與運算符 10級
「 & 」按位與運算符
11、位異或運算符 11級
「 ∧ 」按位異或運算符(Bitwise exclusive OR operator)。
12、位或運算符 12 級
「 | 」按位或運算符(Bitwise inclusive OR operator)。
13、邏輯與運算符 13級
「&&」邏輯與運算符。
14、邏輯或運算符 14 級
「 || 」邏輯或運算符。
15、三元條件運算符 15級
? :條件運算符。
16、賦值運算符 16 級
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算符。
17、逗號運算符 17級
「,」逗號運算符。
具體可參見下圖:
『貳』 c語言關於增量運算符什麼時候生效
for(i=0;i<18,i++){}等價於i=0;while(i<18){i++;},這里i++是一條語句,i的加1操作在這條語句之後。
while (i++ < 18) 會在表達式 i<18計算完了i自增
『叄』 在C語言中運算符的運算順序是如何的
運算符也有個運算順序問題,先算乘除再算加減。單目正和單目負最先運算。取模運算符(%)用於計算兩個整數相除所得的余數。例如:
a=7%4;
最終a的結果是3,因為7%4的余數是3。
那麼有人要問了,我要想求它們的商怎麼辦呢?b=7/4;
這樣b就是它們的商了,應該是1。
也許有人就不明白了,7/4應該是1.75,怎麼會是1呢?這里需要說明的是,當兩個整數相除時,所得到的結果仍然是整數,沒有小數部分。要想也得到小數部分,可以這樣寫7.0/4或者7/4.0,也即把其中一個數變為非整數。
那麼怎樣由一個實數得到它的整數部分呢?這就需要用強制類型轉換了。例如:a=(int)(7.0/4);
因為7.0/4的值為1.75,如果在前面加上(int)就表示把結果強制轉換成整型,這就得到了1。那麼思考一下
a=(float)(7/4);
最終a的結果是多少?
單目減運算符相當於取相反值,若是正值就變為負值,若是負數就變為正值。單目加運算符沒有意義,純粹是和單目減構成一對用的。
『肆』 C語言-運算符
C語言運算符是說明特定操作的符號,它是構造C語言表達式的工具 。C語言的運算是非常豐富的,除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理。常見的運算符有三大類:算術運算符、關系運算符與邏輯運算符,另外,還有一些用於完成特殊任務的運算符,比如位運算、賦值運算符等等。
算術運算符是指:+、—、*、/、%(求余)、++(自增)、--(自減)七種。
自增(++)和自減(--)都有前綴和後綴之分:
在位運算中,是以輸入整形變數的二進制(32位)進行運算的,其中有原碼、反碼和補碼。
位運算符:|、&、~、^、<<、>>六種
賦值運算符有:=、+=、-=、/=、*=、%=、&=、|=、^=、>>=、<<=十一種。
邏輯運算符:&&、||、!三種。
&&:並且,事件一&&事件二,兩個事件都成立時,整個事件才成立;
||:或,事件一||事件二,兩個事件有一個事件成立,整個事件就成立;
!:非,事件不成立,為真。
關系運算符:<、<=、>、>=、==、!=共六種。
關系運算符所得的結果是一個邏輯值,在計算機中邏輯值分別為0和1,若果這個事實的邏輯是真的,那麼邏輯結果為1,反之則為0。
條件?語句1:語句2
功能分析:如果條件成立,就執行語句1,否則執行語句2。
還有一些其他的運算符,比如逗號運算符,括弧運算符等等,都是相對簡單的,自己看一下都是可以理解,並且能做的,因此在這里也不一一進行解釋說明了。
『伍』 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。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(5)c語言運算符執行時間擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。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。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<<左移運算符;>>右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
『柒』 c語言中運算符的結合方向什麼時候從左至右,什麼時候從右至左
左結合性:自左至右。
右結合性:自右至左。
一個運算量兩側的運算符優先順序相同時,按運算符的結合性所規定的結合方向處理。C語言中各運算符的結合性分為兩種,即左結合性和右結合性。
如,算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z則y應先與「-」號結合,執行x-y運算,然後再執行+z的運算。
而最典型的右結合性運算符是賦值運算符,如x=y=z,由於「=」的右結合性,應先執行y=z,再執行x=(y=z)運算。
(7)c語言運算符執行時間擴展閱讀
C語言中的運算符
(1)算術運算符(+,-,*,/,%,++,--)。
(2) 關系運算符(<, >, <=, >=, ==, ![KG-*8]=) 。
(3) 邏輯運算符(!, &&, ||) 。
(4) 位運算符(<<, >>, ~, |, ^, &) 。
(5)賦值運算符(=,及其雙目運算符的擴展賦值運算符)。
(6)條件運算符(?:)。
(7)逗號運算符(,)。
(8) 指針運算符(*, &) 。
(9)求位元組數運算符(sizeof)。
(10)強制類型轉換運算符((類型))。
(11) 分量運算符(·, ->) 。
(12)下標運算符([])。
(13)圓括弧運算符(())。
『捌』 C語言的運算符的優先順序是什麼
1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。
( )圓括弧
[ ]下標運算符號
->指向結構體成員運算符
.結構體成員運算符
『玖』 C語言運算符!
%是除法取余運算。用於整數與整數運算。否則,不同的編譯器會得不同結果。'%'為取余運算符,用於把它前面的整數值或表達式除以其後面的整數值或表達式,結果為不能被後面的整數或表達式整除的最小整數,它後面的數值應該為大於1的正整數。
如"13%7",就表示13
除以7餘6。
作為雙目運算符,左右操作數可以是數值,也可以是表達式。但'%'運算符的左右操作數必須是整數。負數取余運算MS
VC++
編譯器:
-4
%
6
=
-4
6
%
-4
=
2
(9)c語言運算符執行時間擴展閱讀:
在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生余數,所以余數問題在小學數學中非常重要。
取余數運算:
a
mod
b
=
c
表示
整數a除以整數b所得余數為c。
余數的計算公式:c
=
a
-⌊
a/b⌋
*
b
其中,⌊
⌋為向下取整運算符,向下取整運算稱為Floor,用數學符號⌊
⌋表示
例:⌊
3.476
⌋=3,⌊6.7546⌋=6,⌊-3.14159⌋=
-4
如
7
mod
3
=
7-⌊7/3⌋*3=7-2*3=1
參考資料:余數_搜狗網路
『拾』 C語言運算符
1、這個表達式是三次邏輯或的運算,四個++x的值分別為0,1,2,3(++x自增運算符是先自增再運算,每次++的出現都改變了x的值),或運算的運算順序為從左到右,所以:0||1=1,1||2=1,1||3=1,所以最終答案為1(在與或非邏輯運算中,運算符兩邊的值只有兩種類型,一種為真(即非0),一種為假(即0))
2、m應該為4,因為整個表達式依然是從左到右的運算順序,最後m發生改變是在m=4的過程中