當前位置:首頁 » 編程語言 » c語言x和x的運算順序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言x和x的運算順序

發布時間: 2022-12-08 12:41:50

Ⅰ 幫我說說這個c語言的運算順序吧!拜託了

1、x+=x-=x+x

這是賦值運算符,運算順序是從右到左。即先將x+x的值減賦給x變數(x-=x+x,即x=7-14=-7),再將x+=-7
所以x的最終的值為-7+-7
為-14
2、k=(i=1,++i,i++);
這是將括弧中的值計算出來後再賦值給變數k,i=1,++i,i++
從左向右運算,將最後一個表達式的值作為這個逗號運算符組成的表達式的值,該值為2
(但i的值變成3)。所以將2的值賦值給變數k,所以k的值為2
k=i=1,++i,i++;
這個是由逗號運算符組成的表達式語句,先將1賦值給變數i,將變數i的值賦給變數k
(此時i和k的值都為1,表達式2是將i
的值加一個,表達式3的值為2(但i的值變成了3)

Ⅱ c語言運算符順序問題

首先+和-的優先順序比邏輯與和或高所以先做b+c和b-c,b+c=9,b-c=-1,
接著&&優先順序比||高所以先做&&部分,由於b+c=9,b-c=-1兩個式子的結果沒有為0的都為真所以返回1;
而||之前a=3也為真所以最後返回布爾值1,d=1

Ⅲ 請問C語言中 *x++ (*x)++ ++*x *++x的區別

先比較++和*(指針)的優先順序,++較高。

那麼*x++就是取x指向內存的值,然後x+=1;

(*x)++是x指向內存的值,然後其內存的值自增1。

++*x 是x指向內存的值先自增1,在取該值。

*++x 是x先+=1,在取其指向內存的值。

++跟*的優先順序一樣,兩個若一起出現,運算順序是從右往左(不是常規的從左往右),所以++*x即++(*x)是先取x的值,然後讓值自己加1;(地址沒變,指針指向的值變了。)

*++x即*(++x),先讓x的自己加1,就是x的地址加上這個指針類型的步長(比如說這個指針是int類型,那它的地址+4,),然後再取x的值。(地址變了,但是值沒變)

(3)c語言x和x的運算順序擴展閱讀:

基本數據類型

void:聲明函數無返回值或無參數,聲明無類型指針,顯示丟棄運算結果。(C89標准新增)

char:字元型類型數據,屬於整型數據的一種。(K&R時期引入)

int:整型數據,表示範圍通常為編譯器指定的內存位元組長。(K&R時期引入)

float:單精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)

double:雙精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)

Bool:布爾型(C99標准新增)

Complex:復數的基本類型(C99標准新增)

Imaginary:虛數,與復數基本類型相似,沒有實部的純虛數(C99標准新增)

Generic:提供重載的介面入口(C11標准新增)

類型修飾關鍵字

short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)

long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)

long long:修飾int,超長整型數據,可省略被修飾的int。(C99標准新增)

signed:修飾整型數據,有符號數據類型。(C89標准新增)

unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)

restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。

Ⅳ C語言運算符優先順序順序

C語言運算符優先順序順序如下所示:

(4)c語言x和x的運算順序擴展閱讀

一個表達式可以包含多個運算符。在這種情況下,運算符的優先順序決定表達式的哪部分被處理為每個運算符的操作數。例如,按照運算規則,表達式中*、/、以及 % 的優先順序比 + 和 - 高。如下列表達式:

a - b * c

相當於 a-(b*c)。如果想讓操作數以不同的方式組合在一起,則必須使用括弧:

(a - b) * c

如果一個表達式中的兩個操作數具有相同的優先順序,那麼它們的結合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術運算符和操作數的組合方式是從左到右,賦值運算符則是從右到左。

Ⅳ 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語言x和x的運算順序擴展閱讀

C語言中各運算符的結合性:

1、左結合性(自左至右):

例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。

2、右結合性(自右至左)

自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。

Ⅵ c語言,,!x與x!分別表示什麼意思

c語言中只有!x沒有x!,!x的意思就是x!=0。
!x的意思就是x!=0;當X=0時執行while循環;
!即取反,當X!=0時不執行;若x=0,則!x非零;
若x不等於零,則!x=0;一般用if(!x)來做判斷式。
(6)c語言x和x的運算順序擴展閱讀
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。運算符運算順序先算乘除再算加減。單目正和單目負最先運算。

Ⅶ c語言中,!(--x)什麼意思

C語言運算符,括弧裡面(---x)表示x的值減去1,相當於「x」變為「x-1」,括弧外面「!」表示取反(非0數變為0,0變為1)。

除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符,比如位運算符。


(7)c語言x和x的運算順序擴展閱讀

C語言中++*x和*++x的區別

(1)「++「跟「*」的優先順序一樣,如果兩個同時出現,運算順序是從右往左(不是常規的從左往右)。即「++*x」即「++(*x)」,先取x的值,然後讓值自加1。(地址沒變,指針指向的值變了)。

(2)「*++x」即「*(++x)」,先讓x的自加1,就是x的地址加上這個指針類型的步長(比如說這個指針是int類型,那它的地址+4,以此類推),然後再取x的值。(地址變了,但是值沒變)

(3)另外的,int *x,「x」代表的是指針,指針即地址,*是取值符,*x就是取指針x里存的值。

Ⅷ c語言中x++*x++ 的運算順序是什麼

你好~ 首先給你介紹一下c的優先順序:

1 () [] . ->
2 ! ~ -(負號) ++ -- &(取變數地址)* (type)(強制類型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,

x++*x++ 首先運算x++然後就是*

Ⅸ c語音中x+++x怎麼計算

先計算y=y+x,再計算x=x+1。這是正確過程。不要把運算順序和優先順序混為一談,C語言表達式運行順序都是從左至右的,優先順序只解決誰與誰結合在一起的問題,比如x=a || b && c;,先取a,接著取||,把a與||右邊的表達式進行或運算;但由於&&優先順序高於||,這時就把b與c進行與運算,把運算結果和a進行或運算。而不是一開始就先運算優先順序高的b && c,再處理a。y+=x++表達式中雖然++的優先順序高於+=,但++是後++,要等整個表達式運算結束後才進行增1運算,可見優先順序不可能左右運行順序,只管與誰結合在一起運算。

Ⅹ c語言運算順序

首先?是一個三目運算符。
格式為:a>b?a:b;意思是a如果前面的邏輯式為真,結果為a,為假結果是b
a=x>0?3*x:x=10;
邏輯運算比賦值運算優先等級更高,所以a=這里就是把後面的結果賦值給a所以這里先看:x>0
已知x=2;所以這里為真;
輸出冒號前面的x,x=2。 再把2賦值給a,所以結果是2.