Hallo, ich habe ein Problem. Ich versuche gerade einen Quellcode eines fremden Projektes nachzuvollziehen. Das klappt auch ganz gut nur bei der Schleife habe ich ein Problem. while(!(PINC&(1<<2))) Nach dem Was ich bisher zu wissen glaube, wenn die Eingabe an PINC zb. so aussieht: 00000100 Und (1<<2) so: 00000100 Das jetzt als UND verknüpft: 00000100 while(!(00000100)) und eine while-schleife wiederholt sich solange, solange der Ausdruck in den Klammern wahr(true) ist. Ist jetzt 00000100 true?
Max B. schrieb: > Ist jetzt 00000100 true? 0b00000100 ist ungleich 0 und somit wahr. Alles was ungleich 0 ist ist wahr. Aber beachte den '!'-Operator, das ist ein logisches Nicht.
Max B. schrieb: > Nach dem Was ich bisher zu wissen glaube, wenn die Eingabe an PINC zb. > so aussieht: 00000100 > Und (1<<2) so: 00000100 > > Das jetzt als UND verknüpft: 00000100 Richtig. Max B. schrieb: > while(!(00000100)) und eine while-schleife wiederholt sich solange, > solange der Ausdruck in den Klammern wahr(true) ist. while(x) läuft so lange, wie x wahr ist. In C ist der Wert 0 falsch und alle anderen Werte wahr. Das Aufrufezeichen negiert den Wert (aus wahr wird falsch, aus falsch wird wahr). 00000100 ist wahr, denn es ist nicht 0. !(00000100) ist falsch, denn 00000100 ist wahr. Die Schleife while(!(00000100)) läuft also nicht.
Vielen Dank für die Antworten. Also ist 00000000 die einzige Möglichkeit wo false rauskommt?
Heisst du mit zweitem Vornamen zufällig (der ungläubige) Thomas? Oder weshalb reichen 4 diesbezügliche Antworten immer noch nicht aus? Der Hinweis auf das C Buch war übrigens ernst gemeint. Sowas hilft.
Gute Entwickler schreiben einfach if( blah != 0) statt if( !blah) - aber unter C-Hackern gilt das als uncool.
pst schrieb: > Gute Entwickler schreiben einfach if( blah != 0) statt if( !blah) - aber > unter C-Hackern gilt das als uncool. Na das kannst Du besser :-)))
pst schrieb: > Gute Entwickler schreiben einfach if( blah != 0) statt if( !blah) - aber > unter C-Hackern gilt das als uncool. Hauptsache man schreibt nicht if (blah == true), denn das könnte nicht den erwünschten Effekt haben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.