C語言基礎-運算符優先級

運算符優先級

例:

#include <stdio.h>
int main(void)
{
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n", !x*!y, !!!x );
printf("%d,%d\n", x||i&&j-3, i<j&&x<y );
printf("%d,%d\n", i==5&&c&&(j=8), x+y||i+j+k );
return 0;
}

解析:

  1. 本例中!x和!y分別爲0,!x*!y也爲0,故其輸出值爲0。由於x爲非0,故!!!x的邏輯值爲0。

  2. 對x|| i&& j-3式,先計算j-3的值爲非0,再求i && j-3的邏輯值爲1,故x||i&&j-3的邏輯值爲
    1。對i<j&&x<y式,由於i<j的值爲1,而x<y爲0故表達式的值爲1,0相與,最後爲0,對 i== 5&&c&&(j=8)
    式,由於i==5爲假,即值爲0,該表達式由兩個與運算組成,所以整個表達式的值爲0。

  3. 對於式x+ y||i+j+k由於x+y的值爲非0,故整個或表達式的值爲1。

總結:

運算符優先級

相同優先級中,按結合順序計算。大多數運算是從左至右計算,只有三個優先級是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。

運算符優先級口訣:

指針最優,單目運算優於雙目運算。如正負號。
先乘除(模),後加減。
先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2& 7等價於 (1 << (3 + 2))&7.
邏輯運算最後計算。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章