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?
Ja. Ein C Buch wäre nützlich.
Gast
#2964029
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.
True ist alles was nicht 0 ist..
falsch = 0 wahr = alles ungleich null
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.
Gast
#2964126
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 :-)))
Gast
#2964134
Hmja, fiel mir auch gerade ein.
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.