C語言中的運算子優先順序和結合性


運算子優先順序決定了表示式中項的組合方式,並決定了表示式的計算順序。某些運算子比其他運算子具有更高的優先順序;例如,乘法運算子比加法運算子具有更高的優先順序。

例如,x = 7 + 3 * 2; 在這裡,x 被賦值為 13,而不是 20,因為運算子 * 的優先順序高於 +,所以它首先與 3*2 相乘,然後加到 7 中。

這裡,優先順序最高的運算子出現在表的最上面,優先順序最低的出現在最下面。在表示式中,優先順序較高的運算子將首先被計算。

類別運算子結合性
字尾() [] -> . ++ --從左到右
一元+ - ! ~ ++ -- (type)* & sizeof從右到左
乘法* / %從左到右
加法+ -從左到右
移位<< >>從左到右
關係< <= > >=從左到右
相等== !=從左到右
按位與&從左到右
按位異或^從左到右
按位或|從左到右
邏輯與&&從左到右
邏輯或||從左到右
條件?:從右到左
賦值= += -= *= /= %= >>= <<= &= ^= |=從右到左
逗號,從左到右

示例程式碼

#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("Value of (a + b) * c / d is : %d\n", e );
   e = ((a + b) * c) / d; // (30 * 15 ) / 5
   printf("Value of ((a + b) * c) / d is : %d\n" , e );
   e = (a + b) * (c / d); // (30) * (15/5)
   printf("Value of (a + b) * (c / d) is : %d\n", e );
   e = a + (b * c) / d; // 20 + (150/5)
   printf("Value of a + (b * c) / d is : %d\n" , e );
   return 0;
}

輸出

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50

更新於: 2019年7月30日

10K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.