Frage von Kirra1, 46

wie versteht man diese Anweisung ( C sprache)?

Hallo ich habe diese Anweisung in das Programm eingetippt printf("%x",10&3|7); hab 7 gekriegt !!! aber das verstehe ich gar nicht , wie das Programm auf 7 kommt ? 3 = 11 7 = 111 mit oder bekommt man 111 und 10 0010 = 2 warum denn 7 ?? und es soll hexadezimal sein und 7 ist Dezimal !!!??

Antwort
von sarahj, 9

Du hast schon alles richtig erkannt, und machtnix eigentlich alles erklärt:
"&" hat eine höhere Präzidenz als "|"
(kommt außerdem links, also selbst wenn sie die selbe Präz. hätten...).

Und dann wird eben (1010 & 0011) | 0111 berechnet. Das gibt 7.
Und 7 ist auch in hex eine 7.

Tipp: immer Klammern, auch wenn man weiß wie die Präzidenzen sind.
Denn der nächste, der Deinen Code liest, weiß es vielleicht nicht
(oder Du selbst in einem halbe Jahr...)

Tipp: mit printf("0x%02x", ...) sieht es im output besser aus...

Antwort
von Machtnix53, 34

Der Ausdruck wird von links nach rechts ausgewertet. Außerdem hat & Vorrang vor |.

10&3 =2 - -> 2|7 =7.

https://de.wikibooks.org/wiki/C-Programmierung:\_Liste\_der\_Operatoren\_nach\_P...

Kommentar von Machtnix53 ,

und es soll hexadezimal sein und 7 ist Dezimal !!!??

Im Bereich 0-9 ist hex und dez gleich.

Kommentar von maximilianus7 ,

schau dir mal die fragen von Kirra1 an.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten