Gast
#2985012
Ist in dem Beispiel L_DOWN definiert?
1 | |
2 | |
3 | |
Kann man das so machen oder muss ein Wert explizit zugewiesen werden?
|
Anzeige
|
#define L_DOWN !L_UP
Gast
#2985012
Ist in dem Beispiel L_DOWN definiert?
Kann man das so machen oder muss ein Wert explizit zugewiesen werden? was sagt denn dein compiler dazu?
Gast
#2985043
> Ist in dem Beispiel L_DOWN definiert? > [..] > #define L_DOWN !L_UP ^^^^^^ Ja. Das war jetzt einfach. Oder anders gfragt: Was ∗genau∗ ist das ∗eigentliche∗ Problem?
Gast
#2985045
Bin bei Fehlersuche über diese Konstruktion gestolpert und kann es nicht bewerten. Der Compiler beanstandet das nicht.
Gast
#2985062
Eventuell noch eine Klammer um !L_UP setzen.
Gast
#2985064
Dann probier halt mal
printf("L_UP=%d, L_DOWN=%d\n", L_UP, L_DOWN);
Gast
#2985147
Flag schrieb: > Kann man das so machen oder muss ein Wert explizit zugewiesen werden? Warum sollte man das nicht können? Ich würde aber zugunsten der Lesbarkeit den Wert trotzdem explizit hinschreiben.
Gast
#2985252
Danke, die Frage ist beantwortet. Es gibt allerdings auch keinen Grund, nicht stattdessen zu schreiben:
Es wird durch die verkomplizierte Definition nicht irgendwie "besser", "portabler" oder dergleichen.
Gast
#2990036
Ist es eigentlich in C definiert, was herauskommt, wenn man so etwas macht:
Oder ist das compiler-spezifisch?
Gast
#2990046
Bronco schrieb: > st es eigentlich in C definiert, was herauskommt, wenn man so etwas > macht:uint8_t a = !0; ja ist es. (keine Ahnung wo genau) Damit darf man auch so etwas machen uint8_t x = 2 + !0
Gast
#2990055
Ich meine: Ist definiert, ob 0x01 oder 0xFF oder was-auch-immer-außer-0 herauskommt?
Gast
#2990056
Bronco schrieb: > Ist definiert, ob 0x01 oder 0xFF oder was-auch-immer-außer-0 > herauskommt? ja ist es, es kommt bei der verwendung immer 1 raus. (rechnen, ausgaben usw).
Gast
#2990109
Peter II schrieb: > ja ist es. (keine Ahnung wo genau) ISO/IEC 9899:201x: 6.5.3.3 Unary arithmetic operators. Semantics Nr. 5 (Seite 79): "The result of the logical negation operator ! is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int. The expression !E is equivalent to (0==E)." Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|