WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 22.11.2003, 23:31   #1
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard 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.
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 23.11.2003, 00:00   #2
Groovy
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.107


Standard 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 ist offline   Mit Zitat antworten
Alt 23.11.2003, 00:02   #3
Groovy
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.107


Standard Re: Re: c - logische operatoren - vergleich

sry doppelpost...
Groovy ist offline   Mit Zitat antworten
Alt 23.11.2003, 00:07   #4
thyrver
Veteran
 
Registriert seit: 30.11.2001
Alter: 44
Beiträge: 290


thyrver eine Nachricht über ICQ schicken thyrver eine Nachricht über AIM schicken
Standard 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.
thyrver ist offline   Mit Zitat antworten
Alt 23.11.2003, 12:15   #5
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

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.
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 23.11.2003, 12:49   #6
maxb
Großmeister
 
Benutzerbild von maxb
 
Registriert seit: 06.08.2001
Ort: Wien
Beiträge: 5.077

Mein Computer

Standard

Verstaubten Kernighan Ritchie aus dem Schrank hol ...

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
____________________________________

www.maxb.cc
und www.bikeandbeer.info
maxb ist offline   Mit Zitat antworten
Alt 23.11.2003, 12:57   #7
maxb
Großmeister
 
Benutzerbild von maxb
 
Registriert seit: 06.08.2001
Ort: Wien
Beiträge: 5.077

Mein Computer

Standard 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

! liefert immer null, wenn operand <> 0 ist
____________________________________

www.maxb.cc
und www.bikeandbeer.info
maxb ist offline   Mit Zitat antworten
Alt 23.11.2003, 13:38   #8
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

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

!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.
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 23.11.2003, 13:55   #9
Groovy
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.107


Standard Re: Re: c - logische operatoren - vergleich

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

! 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.
Groovy ist offline   Mit Zitat antworten
Alt 23.11.2003, 14:09   #10
thyrver
Veteran
 
Registriert seit: 30.11.2001
Alter: 44
Beiträge: 290


thyrver eine Nachricht über ICQ schicken thyrver eine Nachricht über AIM schicken
Standard

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.
thyrver ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:04 Uhr.


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