天天看點

C語言——運算符優先級一:引言二:優先級表 

 目錄:

一:引言

二:優先級表 

執行個體:

記憶口訣 :

括号成員是老大;      // 括号運算符 []() 成員運算符.  ->

全體單目排老二;      // 所有的單目運算符比如++、 --、 +(正)、 -(負) 、指針運算*、&

乘除餘三,加減四;    // 這個"餘"是指取餘運算即%

移位五,關系六;     // 移位運算符:<< >> ,關系:> < >= <= 等

等與不等排行七;     // 即 == 和 !=

位與異或和位或;     // 這幾個都是位運算: 位與(&)異或(^)位或(|)    

"三分天下"八九十;  

邏輯與,邏輯或;    // 邏輯運算符: || 和 &&

十一十二緊挨着;    // 注意順序: 優先級(||)  底于 優先級(&&) 

條件隻比指派高,    // 三目運算符優先級排到 13 位隻比指派運算符和 "," 高

逗号運算最低級!    //逗号運算符優先級最低 
           

一:引言

運算符的優先級确定表達式中項的組合

這會影響到一個表達式如何計算

某些運算符比其他運算符有更高的優先級,例如,乘除運算符具有比加減運算符更高的優先級

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

下表将按運算符優先級從高到低列出各個運算符

具有較高優先級的運算符出現在表格的上面

具有較低優先級的運算符出現在表格的下面

在表達式中,較高優先級的運算符會優先被計算

二:優先級表 

類别  運算符  結合性 
字尾  () [] -> . ++ - -   從左到右 
一進制  + - ! ~ ++ - - (type)* & sizeof  從右到左 
乘除  * / %  從左到右 
加減  + -  從左到右 
移位  << >>  從左到右 
關系  < <= > >=  從左到右 
相等  == !=  從左到右 
位與 AND  從左到右 
位異或 XOR  從左到右 
位或 OR  從左到右 
邏輯與 AND  &&  從左到右 
邏輯或 OR  ||  從左到右 
條件  ?:  從右到左 
指派  = += -= *= /= %=>>= <<= &= ^= |=  從右到左 
逗号  從左到右 

執行個體:

#include <stdio.h>
 
main()
{
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;
 
   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   printf("(a + b) * c / d 的值是 %d\n",  e );
 
   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   printf("((a + b) * c) / d 的值是 %d\n" ,  e );
 
   e = (a + b) * (c / d);   // (30) * (15/5)
   printf("(a + b) * (c / d) 的值是 %d\n",  e );
 
   e = a + (b * c) / d;     //  20 + (150/5)
   printf("a + (b * c) / d 的值是 %d\n" ,  e );
  
   return 0;
}
           

運作結果:

(a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是 90
a + (b * c) / d 的值是 50