package Algorithmus.BitweisesOperatoren;

public class ODER {

	public static void main(String[] args) {
		/*
		 * Bitweises ODER (|): - Funktion: Der | Operator prüft beide Operanden bitweise
		 * und gibt true zurück, wenn mindestens einer der Operanden true ist (bei
		 * logischen Ausdrücken).
		 * 
		 * - Merkmal: Beide Bedingungen (x und y) werden immer ausgewertet, unabhängig
		 * davon, ob die erste Bedingung true ergibt.
		 * 
		 * - Hinweis: Der | Operator kann auch bitweise verwendet werden, um die Bits
		 * zweier Ganzzahlen zu vergleichen.
		 */

		// Beispiel:
		boolean x = true;
		boolean y = false;
		// z ist true, weil x true ist, aber y wird dennoch ausgewertet.
		boolean z = x | y;

		// Praktischer Einsatz:
		int a = 5;
		int b = 0;

		// Beide Bedingungen werden überprüft. b wird erhöht, auch wenn die erste
		// Bedingung a < 5 true ist.
		if ((b++ < 10) | a < 5)
			System.out.println(a);

		System.out.println(b); // b = 1

		/*
		 * Logisches ODER (||): - Funktion: Der || Operator prüft beide Operanden und
		 * gibt true zurück, wenn mindestens einer der Operanden true ist (bei logischen
		 * Ausdrücken).
		 * 
		 * - Merkmal: Wenn der erste Operand true ist, wird der zweite Operand nicht
		 * mehr ausgewertet. Dies spart Rechenzeit und kann in bestimmten Fällen Fehler
		 * vermeiden (z. B. unnötige Berechnungen oder Operationen).
		 */

		// Praktischer Einsatz:
		int a2 = 5;
		int b2 = 0;

		// Die zweite Bedingung wird nicht überprüft, weil a2 < 10 true ist. b2 wird
		// daher nicht erhöht.
		if (a2 < 10 || (b2++ < 10))
			System.out.println(a2);

		System.out.println(b2); // b = 0

	}
}
