Udostępnij za pośrednictwem


Operatory mnożenia języka C

Operatory mnożenia wykonują operacje mnożenia (*), dzielenia (/) i reszty (%).

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ą przyjąć operandy o typie całkowitym lub zmiennoprzecinkowym; typ operandów może być różny.

Operatory mnożenia wykonują na operandach typowe konwersje arytmetyczne.Typ wyniku jest typem operandów po konwersji.

[!UWAGA]

Ponieważ konwersje wykonywane przez operatory mnożenia nie dostarczają warunków przepełnienia lub niedomiaru, informacje mogą zostać utracone, jeśli wynik operacji mnożenia nie może być przedstawiony za pomocą typu operandów po konwersji.

Poniżej opisano operatory mnożenia języka C:

Operator

Opis

*

Operator mnożenia powoduje mnożenie swoich dwóch operandów.

/

Operator dzielenia powoduje dzielenie pierwszego operandu przez drugi.Jeśli wynik dzielenia dwóch operandów całkowitych nie jest liczbą całkowitą, to zostanie obcięty zgodnie z następującymi regułami:

 

  • Wynik dzielenia przez 0 jest niezdefiniowany, zgodnie ze standardem ANSI C.Kompilator języka C firmy Microsoft generuje błąd w czasie kompilacji lub w czasie wykonywania.

 

  • Jeśli oba operandy są dodatnie lub bez znaku, wynik jest obcinany w kierunku 0.

 

  • Jeśli operand jest ujemny, wynik operacji zdefiniowany przez implementację jest największą liczbą całkowitą mniejszą lub równą algebraicznemu ilorazowi albo najmniejszą liczbą całkowitą większą lub równą algebraicznemu ilorazowi. (Zobacz sekcję Charakterystyczne dla firmy Microsoft poniżej).

%

Wynikiem operatora reszty jest reszta z dzielenia pierwszego operandu przez drugi.Jeśli dzielenie jest niedokładne, wynik jest określany zgodnie z następującymi regułami:

 

  • Jeśli prawy operand ma wartość zero, wynik jest niezdefiniowany.

 

  • Jeśli oba operandy są dodanie lub bez znaku, wynik jest dodatni.

 

  • Jeśli operand jest ujemny, a wynik niedokładny, to wynik jest zdefiniowany przez implementację. (Zobacz sekcję Charakterystyczne dla firmy Microsoft poniżej).

Specyficzne dla firmy Microsoft

Podczas dzielenia, gdy oba operandy są ujemne, wynik jest obcinany w kierunku 0.

Jeśli którakolwiek operacja jest ujemna podczas dzielenia za pomocą operatora reszty, wynik ma taki sam znak jak dzielnik (pierwszy operand w wyrażeniu).

KONIEC informacji specyficznych dla firmy Microsoft

Przykłady

Deklaracje pokazane poniżej 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żone przez i, aby dać wartość 20.0.Wynik jest typu double.

n = i / j;

W tym przykładzie, 10 jest dzielone przez 3.Wynik jest obcinany w kierunku 0, dając wartość całkowitą 3.

n = i % j;

Ta instrukcja przypisuje n resztę całkowitą 1, gdy 10 jest dzielone przez 3.

Specyficzne dla firmy Microsoft

Znak reszty jest taki sam, jak znak dzielnika.Na przykład:

50 % -6 = 2
-50 % 6 = -2

W każdym przypadku, 50 i 2 mają ten sam znak.

KONIEC informacji specyficznych dla firmy Microsoft

Zobacz też

Informacje

Operatory mnożenia i Operator modulo