C和C++運算子

所有的C语言运算符都被C++语言支持。C语言不支持运算符重载。

在不重载时，运算符&&、||、,（逗号运算符），在第一个操作数求值之后有一个顺序点。 

大部分C与C++运算符也可用于其它程序设计语言如C#、Java、Perl、PHP等，具有相同的优先级、结合性与语义。

運算子優先級 
以下是C++程式語言中的所有運算子的優先級和結合性列表。

列表 
在本表中，a、b和c代表有效值（來自變數或返回值的逐字常數或數值）、物件名稱，或適當的左值。

算術運算子

比較運算子

位元運算子

其它運算子

語言擴展

註解 

在C和C++中對運算子的約束，是語言的語法規範因素所指定的（在對應的標準中），而不是優先級列表。這造成了一些微妙的衝突。例如，在C中，條件表達式的語法是：
    邏輯-OR-表達式 ? 表達式 : 條件-表達式
在C++中則是：
    邏輯-or-表達式 ? 表達式 : 賦值-表達式
因此，這個表達式：
    e = a ? b : c = d
兩個語言的語法分析結果並不相同。在C中，這個表達式被解析為：
    e = ((a ? b : c) = d)
這是一個錯誤的語義，因為條件-表達式的結果並不是一個左值。在C++中，則解析為：
    e = (a ? b : (c = d))
這是一個有效的表達式。

位元邏輯運算子的優先級一直受到批評。在觀念裡，&和|是類似於+和*的數值運算子。但是，表達式
    a & b == 7
意謂
    a & (b == 7)
而
    a + b == 7
意謂
    (a + b) == 7
這就需要經常使用圓括號，以免有意料之外的結果。

一元正号运算符可用于操作数表达式的类型提升。例如下例：
template <class T> void f(T const& a, T const& b){};

int main() {
	int a[2];
	int b[3];
	f(a, b); // won't work! different values for "T"!
	f(+a, +b); // works! T is "int*" both  
}

安全问题
下表指出了各个运算符可能导致的安全问题：

參閱 

 C
 C++

參考資料

外部連結 
 Experimental results showing that developers have poor knowledge of binary operator precedence.
 Basic types & Operators

C語言
C++
运算符_(编程)