Wie schafft es b, dass es 10 wird?
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
1 11 10
...Program finished with exit code 0 Press ENTER to exit console.
Danke
|
Anzeige
|
Frage zu C Code: Logische Funktion
Gast
#7309518
Wie schafft es b, dass es 10 wird?
1 11 10 ...Program finished with exit code 0 Press ENTER to exit console. Danke
Gast
#7309524
Möglichkeit: a. indem Du b nicht um eins inkrementiertst? b.
schreibst?
Gast
#7309530
Ich meine warum wird a inkrementiert und b nicht? Der Ausdruck nach dem || wird nicht mehr ausgewertet, weil der gesamte Ausdruck schon wahr ist und nicht mehr wahrer werden kann.
Es "wird" nicht 10, sondern bleibt es.
Bei dem || kommt die short circuit evaluation zum Einsatz. Das heißt, die rechte Seite wird nur ausgeführt, wenn die linke ein logisches false ergibt.
Gast
#7309582
Danke sehr ! Hier noch so was..
2 und 2 und m = 1 Warum hat i den Wert 2? Weil i zuerst um 1 erhöht wird durch den einen Operator und dann nochmal durch den anderen und dann erst wird printf ausgeführt? Und bei folgendem wird dann zuerst der Operator in der Mitte ausgeführt und der linke zuerst angezeigt, dann der in der Mitte und dann am Ende wird i angezeigt
1 und 0 und i= 2 Hier noch ein Code den ich nicht verstehe:
Ergebnis:
Der Compiler inkrementiert x vier mal Also er erstellt x++ * x++ * x++ * x++ Aber warum entsteht dann 2 * 3 * 4 * 5 = 120 ,warum nicht 2 * 2 * 2 * 2 und x wird dann 2+ 4 Inkremente= 6.. Aber ist doch ein Post-Inkrement oder? Ach so, bei
Gast
#7309598
Wer Seiteneffekte in einen Funktionsaufruf packt, ist selbst schuld: Die Auswertungsreihenfolge von Funktionsparametern ist nicht spezifiziert. Du hast „undefined behavior„ (undefiniertes Verhalten) entdeckt. Wann die Auswertung innerhalb eines sog. Sequenze Points erfolgt, ist nicht festgelegt. Das kann der Compiler halten wie er will. Das kann bei einer anderen Optimierungsstufe oder Compilerversion wieder anders sein. Moin, Voellig verrueckter Vorschlag: Solche eigenartigen Konstrukte einfach komplett bleiben lassen. So wie man beim Essen auch nicht ruelpst, beim Kauen spricht oder sich dabei am A.. kratzt, wenn man hoeflich ist. Dann muss man nicht gross nachsinnieren und vor allem muss dann die arme Sau, die den Code mal erbt, nicht gross gruebeln, was da bei so einem Konstrukt wohl rauskommen soll oder kann oder muss... Gruss WK
Gast
#7309669
also 8 = 0b00001000 -1 = 0b1111111 0b00001000 > 0b1111111 ==> false ..
Warum schaltest du beim compilieren nicht die Warnings an, die deinem Programmierstil gerecht werden? Wenn die an sind, warum ignorierst du die dann?
Gruss WK
8 > 255 ist false sizeof() liefert einen Wert vom Typ size_t zurück. Das ist ein unsigned Typ. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|