C 乘法類運算子
乘法類運算子會執行乘法 (*
)、除法 (/
) 和餘數 (%
) 運算。
語法
multiplicative-expression
: cast-expression
multiplicative-expression
*
cast-expression
multiplicative-expression
/
cast-expression
multiplicative-expression
%
cast-expression
餘數運算子 (%
) 的運算元必須為整數。 乘法 (*
) 和除法 (/
) 運算子可以接受整數類資料類型或浮點數類型運算元,運算元的類型可以不同。
乘法類運算子會對運算元執行一般算術轉換。 結果的類型是轉換後的運算元類型。
注意
由於乘法類運算子所執行的轉換不提供溢位或反向溢位條件,因此,如果乘法類運算的結果無法以轉換後的運算元類型表示,則資訊可能會遺失。
下表說明 C 乘法運算子:
運算子 | 描述 |
---|---|
* |
乘法運算子會使它的兩個運算元相乘。 |
/ |
除法運算子會使第一個運算元除以第二個運算元。 如果兩個整數運算元被分割,而且結果不是整數,則會根據下列規則加以截斷: - 根據 ANSI C 標準,除以 0 的結果是未定義。 Microsoft C 編譯器會在編譯時期或執行階段產生錯誤。 - 如果兩個運算元都是正數或不帶正負號,結果會截斷小數點以下的小數部分。 - 如果任一運算元為負數,則運算的結果是小於或等於代數商數的最大整數,或是大於或等於代數商數的最小整數,則會定義實作。 (請參閱 Microsoft 特定章節。) |
% |
第一個運算元除以第二個時,餘數運算子的結果就是餘數。 當除法不精確時,結果會以下列規則決定: - 如果右運算元為零,則結果會是未定義。 - 如果兩個運算元都是正數或不帶正負號,則結果為正數。 - 如果任一個運算元為負數且結果不精確,則結果為實作所定義。 (請參閱 Microsoft 特定章節。) |
Microsoft 專有
在任一個運算元為負數的除法中,攔截的方向為小數點以下的小數部分。
如果具有餘數運算子的除法中任一項運算為負數,則結果的正負號會與被除數 (運算式中的第一個運算元) 相同。
範例
此處所示的宣告會用於下列範例:
int i = 10, j = 3, n;
double x = 2.0, y;
這個陳述式使用乘法運算子:
y = x * i;
在這個案例中,x
會乘以 i
並得出值 20.0。 結果為 double
類型。
n = i / j;
在這個範例中,10 是除以 3。 結果會截斷小數點以下的小數部分,產生整數值 3。
n = i % j;
當 10 除以 3 時,這個陳述式會指派整數餘數 1 給 n
。
Microsoft 特定的
餘數的正負號與被除數的正負號相同。 例如:
50 % -6 = 2
-50 % 6 = -2
在每個案例中,50
和 2
具有相同的正負號。
END Microsoft 特定
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應