Operatory mnożenia języka C
Operatory mnożenia wykonują mnożenie (*
), dzielenie (/
) i pozostałe operacje (%
).
Składnia
multiplicative-expression
: cast-expression
multiplicative-expression
*
cast-expression
multiplicative-expression
/
cast-expression
multiplicative-expression
%
cast-expression
Operandy operatora reszty (%
) muszą być całkowite. Operatory mnożenia () i dzielenia (*
/
) mogą przyjmować operandy typu całkowitego lub zmiennopiętego; typy operandów mogą być różne.
Operatory mnożenia wykonują zwykłe konwersje arytmetyczne na operandach. Typ wyniku jest typem operandów po konwersji.
Uwaga
Ponieważ konwersje wykonywane przez operatory multiplikatywne nie przewidują warunków przepełnienia lub niedomiaru, informacje mogą zostać utracone, jeśli wynik operacji multiplikatywnej nie może być przedstawiony w typie operandów po konwersji.
Operatory mnożenia języka C zostały opisane w tej tabeli:
Operator | opis |
---|---|
* |
Operator mnożenia powoduje mnożenie dwóch operandów. |
/ |
Operator dzielenia powoduje podzielenie pierwszego operandu przez drugi. Jeśli dwa operandy całkowite są podzielone, a wynik nie jest liczbą całkowitą, jest obcinany zgodnie z następującymi regułami: - Wynik dzielenia o 0 jest niezdefiniowany zgodnie ze standardem ANSI C. Kompilator języka Microsoft C generuje błąd w czasie kompilacji lub w czasie wykonywania. - Jeśli oba operandy są dodatnie lub niepodpisane, wynik zostanie obcięty w kierunku 0. - Jeśli operand jest ujemny, czy wynik operacji jest największą liczbą całkowitą mniejszą niż lub równą ilorazowi algebraicznemu, lub jest najmniejszą liczbą całkowitą większą lub równą ilorazowi algebraicznemu, jest zdefiniowana implementacja. (Zobacz sekcję specyficzną dla firmy Microsoft). |
% |
Wynik pozostałego operatora jest resztą, gdy pierwszy operand jest podzielony przez drugi. Gdy podział jest nieistnieje, wynik jest określany przez następujące reguły: - Jeśli prawy operand ma wartość zero, wynik jest niezdefiniowany. - Jeśli oba operandy są dodatnie lub niepodpisane, wynik jest dodatni. - Jeśli którykolwiek operand jest ujemny i wynik jest niewykonytowy, wynik jest zdefiniowany przez implementację. (Zobacz sekcję specyficzną dla firmy Microsoft). |
specyficzne dla firmy Microsoft
W dziale, w którym jeden operand jest ujemny, kierunek obcinania jest w kierunku 0.
Jeśli którakolwiek operacja jest ujemna w dzieleniu z operatorem reszty, wynik ma ten sam znak co dywidenda (pierwszy operand w wyrażeniu).
Przykłady
Deklaracje pokazane tutaj są używane w następujących przykładach:
int i = 10, j = 3, n;
double x = 2.0, y;
Ta instrukcja używa operatora mnożenia:
y = x * i;
W tym przypadku x
jest mnożona przez i
wartość 20.0. Wynik ma typ double
.
n = i / j;
W tym przykładzie wartość 10 jest podzielona przez 3. Wynik jest obcięty w kierunku 0, co daje wartość całkowitą 3.
n = i % j;
Ta instrukcja przypisuje n
pozostałą liczbę całkowitą, 1, gdy 10 jest podzielona przez 3.
Specyficzne dla firmy Microsoft
Znak pozostałej części jest taki sam jak znak dywidendy. Na przykład:
50 % -6 = 2
-50 % 6 = -2
W każdym przypadku 50
i 2
mają ten sam znak.
END Microsoft Specific