Navigation

2.1.3 Logische Operatoren

Es gibt logische Operatoren zum Vergleich von Ausdrücken
&& bedingtes logisches UND a<2 && b>0
|| bedingtes logisches ODER c ==' ' || c =='.'
und zur logischen Negation eines Ausdruckes
! logische Negation ! b

VERBATIM/b213a: 

 int x, y, z;

 x = 3; y = 5;        (wobei 3 = 011 und 5 = 101 ist)
 z = x  & y;          ==> z =   1 (1)
 z = x && y;          ==> z =   1 (1)
 z = x  | y;          ==> z = 111 (7)
 z = x || y;          ==> z =   1 (1)

Regeln:
1) Ein Ausdruck, der durch logische Verknüpfung von Teilausdrücken gebildet wird, kann die Werte 1 (TRUE) und 0 (FALSE) annehmen
2) Vergleichsoperatoren haben höheren Rang als bedingte logische Operatoren
3) bedingte logische Operationen werden von links nach rechts ausgewertet, solange bis Ergebnis eindeutig ist !
4) && hat höheren Rang als ||

BEISPIELE/b213a.c: 

#include <stdio.h>

main()      /* logische Operatoren */
{       int x , y, z;

        x = 1; y = 2; z = 0;
        x = x && y || z; printf("%d\n", x);
        printf("%d\n", x || ! y && z );
}

BEISPIELE/b213b.c: 

#include <stdio.h>

int letter(c) 
int c;
{
   if( ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) )
       return(1);
   else
       return(0);
}

main()          /* Vergleich: c Buchstabe? -> wahr (1)   */
                /*            c Buchstabe? -> falsch (0) */
{
   printf("5: %d\n", letter(5));
   printf("g: %d\n", letter('g'));
   printf("T: %d\n", letter('T'));
   printf("@: %d\n", letter('@'));
}

VERBATIM/b213b: 

int letter(c) /* in C typische Form des Zeichenvergleichs */
int c;
{
   return(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z');
}

Aufgabe:
Welcher Wert wird y zugewiesen ?

VERBATIM/b213c: 

int y, z;

z=2;
y=!(!z);

Navigation