這些二進位運算子具有由左至右的順序關聯性。
乘法類運算子接受算術類型的運算元。 模數運算子 (
%
) 具有更嚴格的需求,因為它的運算元必須是整數類型。 (若要取得浮點除法的其餘部分,請使用執行時間函式
fmod
.)
標準轉換
中涵蓋的轉換會套用至運算元,而結果為已轉換的類型。
乘法運算子會產生第一個運算元與第二個運算元相乘的結果。
除法運算子會產生第一個運算元除以第二個運算元的結果。
模數運算子會產生下列運算式所提供的餘數,其中
e1
是第一個運算元,而
e2
是第二個運算元:
e1
- (
e2
/ ) *
e2
,其中兩個運算元都是整數類型。
在除法或模數運算式中除以 0 並未定義,而且會產生執行階段錯誤。 因此,下列運算式會產生未定義的錯誤結果:
i % 0
f / 0.0
如果乘法、除法或模數運算式的兩個運算元有相同的正負號,則結果為正數。 否則,結果為負數。 模數運算結果的正負號是由實作所定義。
由於乘法類運算子所執行的轉換不提供溢位或反向溢位條件,因此,如果乘法類運算的結果無法以轉換後的運算元類型表示,則資訊可能會遺失。
Microsoft 特定的
在 Microsoft C++ 中,模數運算式的結果一律與第一個運算元的正負號相同。
END Microsoft 特定
如果兩個整數計算的除法不精確,而且只有一個運算元為負數,則結果會是小於除法運算會產生之實際值的最大整數 (範圍內,忽略正負號)。 例如,-11 / 3 的計算值為 -3.66666666666。 該整數除法的結果為 -3。
乘法運算子之間的關聯性是由識別 (e1 / e2) * e2 + e1e2 e2 == e1 % 所指定。
下列程式將示範乘法類運算子。 請注意,的任一運算元 10 / 3
都必須明確轉換成 類型 float
,以避免截斷,如此兩個運算元在除法之前都是類型 float
。
// expre_Multiplicative_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
int x = 3, y = 6, z = 10;
cout << "3 * 6 is " << x * y << endl
<< "6 / 3 is " << y / x << endl
<< "10 % 3 is " << z % x << endl
<< "10 / 3 is " << (float) z / x << endl;
具有二元運算子的運算式
C++ 內建運算子、優先順序和順序關聯性
C 乘法運算子