當前位置:首頁 » 編程語言 » c語言優先順序自增問題
擴展閱讀
怎麼清除預覽圖片的緩存 2022-11-30 14:15:11
c語言創建有序鏈表 2022-11-30 14:08:06

c語言優先順序自增問題

發布時間: 2022-11-24 22:26:47

⑴ 關於c語言的自增\減的優先順序

自增的優先順序要比×高
i=a++*5等價於i=(a++)*5,由於a++中的++在a的後面,所以表達式a++的值為沒有加1前的a的值,所以表達式i=a++*5實際上等價於
i=a*5;
a++;
所以結果是40
i=++a*5等價於i=(++a)*5,由於++a中的++在a的前面,所以表達式++a的值為加1後a的值,所以表達式i=a++*5實際上等價於
++a;
i=a*5;
所以結果是45

⑵ C語言,自增與優先順序問題

二進制"|"運算規則

0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1
於是
10|10=10
10|01=11
100|001=101
101|010=111
以此類推。

先算++y;
y就等於2
再算y|t
y|t等價於2|2等價於(二進制)10|10等於(二進制)10等於(十進制)2

⑶ C語言中賦值和自增同時參與運算的優先順序如何確定

賦值優先順序最低,但括弧優先順序最高,先做括弧裡面的賦值,然後處理前綴自增運算,下面是處理乘法,最後處理最左邊的賦值。

⑷ 關於c語言的自增\減的優先順序

三樓的,結果不是1,0;是0,0吧
這個程序不能說明優先順序的問題,因為在c語言的printf輸出語句中,是從右向左執行的。
自增自減高於邏輯非
main()
{
int
a=-1,b=1,c;
c=!a++&&b++;
printf("%d%d",b,c);
}
執行結果是1,0,b的值沒變,c=0,則說明是先執行a++再執行!的
這說明自增自減高於邏輯非

⑸ 關於c語言中自增問題

i就不用說了吧,本來就是8,C語言中負號運算符與自加運算符的優先順序相同,結合方向是
「自右至左」,表達式-i++就相當於對表達式,-(i++)進行運算,此時自加運算符「++」為後綴運算符,(i++)的值為8,因此-(i++)的值為-8,只是i自增為9,但表達式(i++)的值還是8
i++是表達式先取I的值,然後 i 進行增1運算,而++i則先進行 i 增1運算,,表達式的值也增1
希望能幫到你,我也在搞這個C語言

⑹ c語言中指針運算符*和自增運算符++的優先順序

運算符的優先順序確定表達式中項的組合。這會影響到一個表達式如何計算。某些運算符比其他運算符有更高的優先順序,乘除運算符具有比加減運算符更高的優先順序。

例如 x = 7 + 3 * 2,在這里,x 被賦值為 13,而不是 20,因為運算符 * 具有比 + 更高的優先順序,所以首先計算乘法 3*2,然後再加上 7。

結合性是指具有相同優先順序的操作符的運算順序,從左至右運算稱為左結合,從右至左運算稱為右結合。

自增(++)和自減(--)操作符為對象加1或減1操作提供了方便簡短的實現方式。它們有前置和後置兩種使用形式。到目前為止,我們已經使用過前自增操作,該操作使其操作數加1,操作結果是修改後的值。

C語言運算符是說明特定操作的符號,它是構造C語言表達式的工具。C語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理。

(6)c語言優先順序自增問題擴展閱讀

運算符優先順序

1、函數計算優先。

2、其次是強制類型轉換。

3、自增、自減和取反次之。

4、先乘除再加減。

5、有括弧先算括弧內的。

6、表達式中出現連續兩個運算符時最好用空格隔開,如a+++b要寫成:a++ +b或a+ ++b。同一優先順序的運算符,運算次序由結合方向所決定。

⑺ C語言自增自減問題

其實呢,各個編譯器對這個問題的處理方式是不同的。
要弄明白這個問題,首先得明確兩點:
1、括弧運算符的優先順序是最高的,高於自增自減運算和加減乘除運算。因此括弧內的表達式首先計算;
2、++i這個自增表達式的意思是i的值加1,然後再使用i。(++i)就表示先把i的值加1,然後再將i用在運算中。
因此。p=(++x)+(++x)+(++x);這個語句最終在本質上是p=i+i+i。而不是你認為的每次算出括弧表達式中的結果然後依次相加。這一點非常重要。

而至於最終的p=i+i+i中i的值是多少呢,不同的編譯器之間就產生了分歧。
其中vc和gcc認為按照加號運算從左到右的運算順序來。也就是先計算第一個加法,然後再計算第二個。具體的過程就是:
先計算第一個(++i),這個時候i自增成6,得到i;
再計算第二個(++i),這個時候i自增成7,得到i;
現在i=7了,計算第一個加法(++x)+(++x),也就是i+i,即7+7=14;結果存在臨時變數temp中;
然後計算第三個(++i),由於之前i=7,因此現在i自增成8,得到i;
最後計算第二個加法(++x)+(++x)+(++x),也就是temp+i。於是就是14+8=22。
而在TC中則認為必須先把高優先順序的計算完再直接計算低優先順序運算。於是就是直接先將i進行三次自增,i變成8。然後直接計算i+i+i,所以得到24。

⑻ 關於c語言的自增\減的優先順序

自增的優先順序要比×高
i=a++*5等價於i=(a++)*5,由於a++中的++在a的後面,所以表達式a++的值為沒有加1前的a的值,所以表達式i=a++*5實際上等價於

i=a*5;
a++;
所以結果是40
i=++a*5等價於i=(++a)*5,由於++a中的++在a的前面,所以表達式++a的值為加1後a的值,所以表達式i=a++*5實際上等價於
++a;
i=a*5;
所以結果是45

⑼ 關於C語言自增問題

第一題挺簡單的,++優先順序是很高的(所有單目運算符的優先順序都很高,僅次於擴號),所以要在所有++運算完之後再運算+法,也就是說,在運算+之前,i已經進行了兩次自増,由3增到了5,然後再相加,k當然就等於10了。
第二題,你是不是看錯題了?或者書印刷錯誤?這個k的值應該是8啊。C語言採用的是「最長匹配原則」,也就是在保證表達式有意義的前提下,從左到右盡可能多地將字元組成一個運算符,所以i+++(++i)等於是(i++)+(++i);i++是先引用後自増,運算完i++後,i變成4,但是i++表達式的值卻是3,然後接著運算++i,這時是先自増後引用,i=4的前提下自増,i就變5了,所以++i的表達式的值是5,然後運算+法,所以之後,k=8,i=5。

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

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

(10)c語言優先順序自增問題擴展閱讀

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

a - b * c

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

(a - b) * c

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