Multiplikations-Operator *

Der Multiplikations-Operator führt eine Multiplikation zweier Elemente aus. Für arithmetische Typen entspricht dies der mathematischen Multiplikation zweier Zahlen.







64
6
10
15.0
#include <stdio.h>

int main(){
  int a = 2;
  int b = 3;
  float c = 7.5f;
  printf("%d\n",  8 * 8);
  printf("%d\n",  a * b);
  printf("%d\n",  a * 5);
  printf("%f\n",  a * c);
  return 0;
}

Details

Der Multiplikations-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, dessen Typ grundsätzlich durch die arithmetische Umwandlung der beiden Operanden festgelegt ist.

Der Operator ist zulässig für arithmetische (Integer- und Fliesskomma-) Typen sowie den bool-Typ. Boolsche Werte werden als Integer-Werte aufgefasst. Die Operanden werden gegebenfalls entsprechend den Regeln der arithmetischen Umwandlung gecastet.

Der Multiplikations-Operator entspricht bei arithmetischen Typen grundsätzlich der mathematischen Multiplikation, wobei die beiden Operanden auch als Faktoren bezeichnet werden. Aufgrund der Rangordnung der Operatoren ist es möglich, einen Positiv- oder Negativ-Operator bei den beiden Faktoren direkt hinzuschreiben.


-50
15
25
int a = 5;
printf("%d\n",  10 * -a);
printf("%d\n",  a  * +3);
printf("%d\n",  -a * -a);

Der Multiplikations-Operator entspricht der direkten Umsetzung des entsprechenden Multiplikations-Befehls in Assembler und kann somit für arithmetische Typen einen Over- oder Underflow ergeben, was bei Integer-Typen zu einem Wrap-Around führt. Bei Fliesskomma-Typen kann dies zum Wert Unendlich führen.


1705032704

1.000000e+20
inf
unsigned int a = 3000000000;
printf("%u\n",  a * 2);
float b = 1e20;
printf("%le\n",  b);
printf("%le\n",  b * b);