Additions-Operator +

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







2
2
2
2.0
#include <stdio.h>

int main(){
  int a = 1;
  int b = 1;
  float c = 1.f;
  printf("%d\n",  1 + 1);
  printf("%d\n",  a + b);
  printf("%d\n",  a + 1);
  printf("%f\n",  a + c);
  return 0;
}

Details

Der Additions-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, den bool-Typ sowie Pointer. Boolsche Werte werden als Integer-Werte aufgefasst. Handelt es sich bei den Typen der beiden Operanden um Pointer-Typen, so wird nach den Regeln der Pointer-Arithmetik vorgegangen. Handelt es sich bei den Typen der beiden Operanden um arithmetische Typen, so wird gegebenfalls eine automatische arithmetische Umwandlung vorgenommen.

Der Additions-Operator entspricht bei arithmetischen Typen grundsätzlich der mathematischen Addition, wobei die beiden Operanden auch Terme genannt werden. Aufgrund der Rangordnung der Operatoren ist es möglich, einen Positiv- oder Negativ-Operator bei den beiden Termen direkt hinzuschreiben.


5
8
-10
int a = 5;
printf("%d\n",  10 + -a);
printf("%d\n",  a  + +3);
printf("%d\n",  -a + -a);

Der Additions-Operator entspricht der direkten Umsetzung des entsprechenden Additions-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.


0
unsigned int a = 4294967295;
printf("%u\n",  a + 1);