Frage von Kirra1, 20

warum bekommt man x 1x bei folgender Anweisung?

hallo ich erfasse es nicht wie das Programm bei folgender Anweisung auf x 1x kommt printf("x%4dx", 0xF3&&0x80); F3 hexadezimalzahl beträgt 243 im Dezimal bei 0x80 ist es 128 warum denn x 1x ???

Antwort
von Omnivore08, 6

Na ganz einfach:

F3 ist größer 0 und somit wahr (true) und 80 genauso. Und wahr UND wahr ergibt in C nun mal als Standard die 1. Alles außer 0 ist wahr. Das kennen vorallem die Unix-Programmierer, die gerne folgendes schreiben:

if ( pid = fork() ) //JAAAA nur der Zuweisungsoperator, nicht der Vergleichsoperator

Du machst den gleichen fehler, nur andersherum: Du fragst, ob 2 Zahlen true sind:

0xF3 && 0x80

Du solltest vielleicht, dein Problem lösen können, wenn du statt dem logischen UND, das biweise UND benutzt:

0xF3 & 0x80

Ich hoffe ich konnte dir helfen

Gruß
Omni

Antwort
von 3v1lH4x0R, 9

ich denke wie es zu den x en kommt kannst du dir selbst erklären
%4d will nun einen 4stelligen integer ausgeben (integer = ganzzahl)
0xf3&&0x80 beinhaltet nun die 1
der && operator (und operator genannt) überprüft ob beide werte wahr (englisch true) sind. da c kein true oder false kennt wird 1 oder 0 verwendet
sowohl f3 als quh 80 stellen zahlen ungleich 0 dar und sind sonit wahr

Kommentar von Kirra1 ,

das weiss ich :) 

F3 = 11110011

80= 10000000

da hat man mit UND Operstor : 

10000000
 oder =????

Kommentar von maximilianus7 ,

nein.

du meinst den & - operator = "bitweise und"

3v1lH4x0R und deine fragestellung meint && == "logisch und".

und
nochmal: dein problem ist, dass du denkst, du kannst mit deiner
krümeliger fragerei den fetten (= unverdaulichen) kuchen C einverleiben.
diese fragerei nutzt dir nix. arbeite dir ein tutorial durch.

warum quälst du dich mit programmieren und insbesonders mit C? ist informatik pflichtfach?
wenn das so ist, ist das alles nur traurig (aus pädagogischer sicht).

Kommentar von Kirra1 ,

nein. Informatik ist nicht mein Hauptfach !! Sie können antworten oder Sie können die Mühe sparen , mir zu frustrieren !! Ok <!! danke ! 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten