Logische Verknüpfungen in C

#2523996
Lesenswert?

Hallo, ich habe ein Verständnissproblem bei folgendem Auschnitt eines 
C-Programms:

int g;
int x = 7, y = 8;

g = !(x&&y)

Meine Frage liegt jetzt darin:
g soll ja einen Wert 0 oder 1 liefern. Wenn ich 7(binär:0111) und 
8(binär1000) verunde erhalte ich doch 0000 und dann noch negiert wegen 
dem !, heißt für g = 1111. Aber voher weiß ich jetzt ob das true 1 oder 
false 0 ist ?

Ich hoffe jemand kann mir das kurz erklären.
Vielen Dank!

Thomas
#2524009
Lesenswert?

Thomas E. schrieb:
> Hallo, ich habe ein Verständnissproblem bei folgendem Auschnitt eines
> C-Programms:
>
> int g;
> int x = 7, y = 8;
>
> g = !(x&&y)
>
> Meine Frage liegt jetzt darin:
> g soll ja einen Wert 0 oder 1 liefern. Wenn ich 7(binär:0111) und
> 8(binär1000) verunde erhalte ich doch 0000

aufpassen!
Das ist kein bitweises und sondern ein logisches Und.


7 ist nicht gleich 0 und daher logisch TRUE
8 ist nicht gleich 0 und daher logisch TRUE

TRUE && TRUE  ergibt wieder TRUE.
Und die Negierung davon ergibt FALSE


In der "Vorwärtsrichtung"
  Alles was 0 ist, ist logich FALSE. Alles ungleich 0 gilt als TRUE

In der "Rückwärtsrichtung"
  FALSE wird als 0 dargestellt
  TRUE  wird als 1 dargestellt

  !FALSE ergibt also 1
#2524028
Lesenswert?

Karl Heinz Buchegger schrieb:

>
> 7 ist nicht gleich 0 und daher logisch TRUE
> 8 ist nicht gleich 0 und daher logisch TRUE
>
> TRUE && TRUE  ergibt wieder TRUE.
> Und die Negierung davon ergibt FALSE
>
>
> In der "Vorwärtsrichtung"
>   Alles was 0 ist, ist logich FALSE. Alles ungleich 0 gilt als TRUE
>
> In der "Rückwärtsrichtung"
>   FALSE wird als 0 dargestellt
>   TRUE  wird als 1 dargestellt
>
>   !FALSE ergibt also 1

Ok! ich glaube ich habe es vertanden. Ein weiteres Beispiel: h = D || 0 
müsste doch True ergeben oder? Da D nicht gleich 0 also True und dann 
True || False ergibt True?
#2524061
Lesenswert?

Thomas E. schrieb:
> Karl Heinz Buchegger schrieb:
>> Thomas E. schrieb:
>>
>>> Ok! ich glaube ich habe es vertanden. Ein weiteres Beispiel: h = D || 0
>>> müsste doch True ergeben oder? Da D nicht gleich 0 also True und dann
>>> True || False ergibt True?
>>
>> Wenn D tatsächlich ungleich 0 ist, dann ja.
>
> Danke dir!
> D soll eine Hex.zahl sein also Dezimal 13

Dann schreibs bitte in der C üblichen Notation 0xD oder 0x0D

Ansonsten verwechselt man das mit Variablennamen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren