Logisch AND-Operator &&

Der Logisch-AND-Operator verknüpft zwei boolsche Werte nach den Regeln des logischen AND: true AND true ergibt true und alle anderen Kombinationen ergeben false.






x AND y is true
#include <stdio.h>

int main(){
  int x = 1;
  int y = 1;
  if(x && y){printf("x AND y is true\n");}
  return 0;
}

Details

Der Logisch-AND-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, in C ein Integer-Typ, in C++ ein boolscher Typ.

Der Operator ist zulässig für boolsche Werte, Integer-Werte, Fliesskommawerte sowie Pointer. Zwar ist dieser Operator bereits in C verfügbar, jedoch sind der Typ bool sowie die Wahrheitswerte true und false erst ab C++ verfügbar. In C wird für den Wert false der Integer-Wert 0, für true ein Integer-Wert ungleich 0 (normalerweise 1) verwendet.

Der Rückgabewert des Operators kann nur entweder true oder false (oder die entsprechenden Integer-Werte in C) sein. Im Gegensatz dazu gibt der Bitweise-AND-Operator stets einen Integer-Wert zurück.

Der Unterschied zwischen der logischen und der bitweisen Variante des AND-Operators ist für Einsteiger in die Sprache manchmal schwer verständlich. Der Unterschied ist: Die logische Variante verknüpft 1-Bit-Werte, die bitweise Variante verknüpft mehrere Bits von Werten. Selbst nach mehreren Jahren Erfahrung kommt es vor, dass aufgrund der ähnlichen Schreibweise (&& oder &) aus Versehen und ohne es zu merken der falsche Operator verwendet wird. Da zudem in gewissen Fällen die beiden Operatoren dieselben Ergebnisse liefern, ist dies eine schwer aufzufindende Fehlerquelle, die manchmal einige Stunden Fehlersuche benötigt.