WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   c - logische operatoren - vergleich (http://www.wcm.at/forum/showthread.php?t=116390)

Bastet 22.11.2003 23:31

c - logische operatoren - vergleich
 
auf ein neues: hab ich da wieder mal einen denkfehler? oder stimmt mal wieder des skript nicht *grml*

Code:

übungsbeispiele:                ergebnisse laut skript:

17+4 > 9 && 8*2 !=16              ergebnis= 0
2*11 != 10 || 9 == 11          ergebnis= 1
43 != 30+4 && !2 > 3                  ergebnis= 0
48-5 != 33+10 && 21 == !0        ergebnis= 0
!4 || !20                        ergebnis= 0
17+2 != 45/3 && !(11-11)        ergebnis= 1

17 < 20 && !(4-4)                ergebnis= 1 denke aber es ist 0!!

habe alle richtig gelöst bis aufs letzte beispiel:
17 ist kleiner als 20 (trifft zu) - 17 ist aber nicht kleiner als 4-4 (trifft nicht zu)
da aber beide zutreffen müssen ist das ergebnis bei mir 0



hmm... scheibar komm ich auch irgendwie nicht mit dem ! not operator zurecht:

!0 ergebnis =1
(ist mir klar, wenn der operand gleich 0 ist, dann ist das ausdrucksergebnis 1, wenn nicht dann 0)

!14 || 12 > 11 ergebnis= 1
(wieso? !14 ist nicht null also muss ergebnis= 0 sein und 12 ist grösser als 11, also trifft zu, ergebnis=1) nach welcher regel wird beurteilt, das logische oder, hilft mir dabei nicht wirklich und die operanden haben die gleiche priorität.

ich hab mir schon das gehirn verrenkt aber ich komm einfach nicht drauf welchen denkfehler ich begehe.

Groovy 23.11.2003 00:00

Re: c - logische operatoren - vergleich
 
Zitat:

Original geschrieben von Bastet


!14 || 12 > 11 ergebnis= 1
(wieso? !14 ist nicht null also muss ergebnis= 0 sein und 12 ist grösser als 11, also trifft zu, ergebnis=1) .

!14||12>11 bedeutet das nur einer der beiden Ausdrücke wahr sein soll, wegen dem oder (||) operator, d.h. der ganze Ausdruck ist wahr.
Wenn der Operator && vorkäme wär das Ergebnis 0.


17 < 20 && !(4-4)
Ich würd auch sagen es ist 1 weil !0 bedeutet ja alle Zahlen außer 0 sind wahr.


Alles ohne Gewähr, hab auch Probleme beim C++ Programmieren an der Uni. ;)

Groovy 23.11.2003 00:02

Re: Re: c - logische operatoren - vergleich
 
sry doppelpost...

thyrver 23.11.2003 00:07

Re: c - logische operatoren - vergleich
 
[quote]Original geschrieben von Bastet
Code:

17 < 20 && !(4-4)                ergebnis= 1 denke aber es ist 0!!
siehe es mal so

Code:

(17 < 20) && !(4-4)
dann löse auf:
Code:

(17 < 20) - > 1
und
Code:

!(4-4) - > !(0) - > 1
also steht da eigentlich:
Code:

1 &&  1
Und das ist 1.

Bastet 23.11.2003 12:15

danke erstmal - ich glaub ich habs

!14||12>11 also sobald ein , oder || operator dabei ist, wird davon ausgegangen dass einer wahr ist.


@fabsi
ja, daran dachte ich auch schon, aber auf grund eines anderen beispiels habe ich den gedanken wieder verworfen.

maxb 23.11.2003 12:49

Verstaubten Kernighan Ritchie aus dem Schrank hol ...:D

Bei solchen Aufgaben ist es wichtig, die Priorität der Operatoren zu kennen. vielleicht hilft dir das hier weiter, wenn nicht eh schon bekannt ->

Code:

Priorität  Operator                                  Assoziativität     
  15      ( )  [ ]  ->  .                        von links nach     
                                                      rechts             
  14      ! ~ ++ -- + - (TYP) * & sizeof            von rechts nach     
                                                      links               
  13      * / %  (Rechenoperationen)                von links nach     
                                                      rechts             
  12      + - (binär)                                von links nach     
                                                      rechts             
  11      <<  >>                                    von links nach     
                                                      rechts             
  10      < <= > >=                                  von links nach     
                                                      rechts             
    9      == !=                                      von links nach     
                                                      rechts             
    8      &                                          von links nach     
                                                      rechts             
    7      ^                                          von links nach     
                                                      rechts             
    6      |                                          von links nach     
                                                      rechts             
    5      &&                                        von links nach     
                                                      rechts             
    4      ||                                        von links nach     
                                                      rechts             
    3      ?:                                        von rechts nach     
                                                      links               
    2      =  +=  -=  /=  *=  %=  >>=  <<=  &=  |=    von rechts nach     
          ^=                                        links               
    1      , (Sequenz-Operator)                      von links nach     
                                                      rechts

http://info.baeumle.com/ansic/c04.html

maxb 23.11.2003 12:57

Re: c - logische operatoren - vergleich
 
Zitat:

Original geschrieben von Bastet
!14 || 12 > 11 ergebnis= 1
(wieso? !14 ist nicht null also muss ergebnis= 0 sein und 12 ist grösser als 11, also trifft zu, ergebnis=1)

wieso sollte !14 nicht gleich 0 sein :confused:

! liefert immer null, wenn operand <> 0 ist

Bastet 23.11.2003 13:38

operatoren, die in der gleichen zeile stehen, haben gleiche priorität. aso - die wie oben in der liste aufgezählt wurden zb. + - gleiche priorität.


@maxb

wahhh.... verwirr mich nicht :lol:

!not - ist dieser operand gleich null ist das ausdrucksergebnis 1, andernfalls 0

somit:

!10 ergebnis= 0
!0 ergebnis= 1
!14 ergebnis= 0

gibts zu ! evt. ne erklärung für dummies? hab schon überall nachgelesen, aber es wird immer wie oben erklärt.

Groovy 23.11.2003 13:55

Re: Re: c - logische operatoren - vergleich
 
Zitat:

Original geschrieben von maxb
wieso sollte !14 nicht gleich 0 sein :confused:

! liefert immer null, wenn operand <> 0 ist

Weil nur ein Ausdruck wahr bzw. 1 sein soll, wegen ||
z.B.

15<10||3+5==8 ist das Ergebnis 1 weil 3+5=8 wahr ist.

thyrver 23.11.2003 14:09

Zitat:

Original geschrieben von Bastet
@fabsi
ja, daran dachte ich auch schon, aber auf grund eines anderen beispiels habe ich den gedanken wieder verworfen.
He, nicht verwerfen, das stimmt. Zumindest glaube ich das.

http://www.schellong.de/c.htm
Das ist mein Standardnachschlagwerk, wenn ich wo nicht weiter weiß.

(a || b) = c:
Logisch oder: Sobald a ODER b 1 ergeben ist c 1

(a && b) = c:
Logisch und: Sobald a UND b 1 ergeben ist c 1

deiner erklärung von ! war eh gut:

!Zahl liefert 1 wenn Zahl 0 ist und 0 wenn Zahl nicht 0 ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag