C++ Hexadezimal-Problem

Hi,

Ich habe folgendes Problem wenn ich den Code eingebe:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i = 10;

printf("Hexadezimal i: %x\n", i);

system("Pause");
}

gibt mir das Programm den Wert "a" aus.
Dabei müsste das Programm den Wert "0xA" ausgeben.

Wieso funktioniert das nicht??
Hilfe wäre echt gut (:
 
Es gibt a aus, weil das der hexadezimale Wert von 10 ist. Das Präfix 0x wird nur verwendet, damit der Compiler eine Hexadezimalzahl erkennt und hat überhaupt nichts mit dem hexadezimalen Zahlensystem zu tun.
Wenn du das 0x davor stehen haben willst, musst du es selber in die printf-Anweisung schreiben.

mfg Christian

PS: return 0;
 
Zuletzt bearbeitet:
Okay, danke dir (:

Doch warum steht bei den meisten programmen diese 0x dabei??
Und wozu wird es benötigt?

Ich weiß gehört nicht ganz zum thema. :wink:
Aber es würde mich trotzdem mal Interessieren.

mfg. JeyFox
 
Als Hinweis, dass die nachfolgende Zahl hexadezimal zu interpretieren ist. 50 würde zum Beispiel jeder als die dezimale Zahl 50 interpretieren, könnte aber genauso gut auch 0x50 = 80 sein. Ähnlich ist es bei binären Zahlen, dort verwendet man 0b: 0b1001

mfg benediktibk
 
Der Präfix "0x" vor einer Zahl ist nur ein Hinweis darauf, dass es sich um eine Zahl im hexadezimalen Format (Basis 16) handelt. Viele Programme verwenden das bei ihrer Ausgabe, um dies dem Leser klar zu machen.
Genauso ist die Notation mit Präfix "0" verbreitet, um anzudeuten, dass es sich um eine Zahl im oktalen Zahlensystem (also zur Basis 8) handelt.

Wenn du im Programmcode eine Zahl im hexadezimalen Format angeben willst, musst du das "0x" davorschreiben, damit der Compiler das kapiert, wie Thunder11 schon gesagt hat.
 
Doch warum steht bei den meisten programmen diese 0x dabei??
Und wozu wird es benötigt?

einfach, damit man erkennt, dass es sich um eine hexadezimale Zahl handelt.
Code:
Prefix    Zahlensystem           Basis       Werte         Beispiele
---------------------------------------------------------------
0b        Binär-/Dual-System      2          0..1          0b01100101
0         Oktal-System            8          0..7          0755
(kein)    Dezimal-System         10          0..9          23
0x        Hexadezimal-System     16          0..9, A..F    0x032A

edit: da war ich wohl zu langsam
 
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i = 10;

printf("Hexadezimal i: %x\n", i);

system("Pause");
}

Vlt ihre ich mich ja, aber für mich sieht das sehr nach einem C/C++ Hybrid aus. In welcher Sprache hättest du es gerne? C oder C++ ?



EDIT 1:
C++ könnte so aussehen:

Code:
#include <iostream>
using namespace std;
int main()
{
  int d = 1324;
  cout << "0x" << hex << d << endl;
  return 0;
}
 
Zuletzt bearbeitet:
Ja eigentlich sollte es C++ sein :wink:
Betonung liegt auf SOLLTE... ;)
Was du schreibst, ist jedoch eigentlich ehr C...

Aber wozu dient der Befehl using namespace std ??
der Sinn erschließt sich von ganz allein, wenn man mal ein vernünftiges C++-Buch oder -Tutorial zur Hand nimmt - mit etwas Glück steht es da schon bei der Erklärung des Hello-World-Beispiels ;)

http://de.wikipedia.org/wiki/Namespace

ich weiß nicht, wo du deine Beispiel-Codes her hast, aber es scheint mir so, als wolltest du C++ lernen, schaust dir aber C-Tutorials an oder so...
Daher: werde dir vor deinen Programmier-Versuchen erst einmal klar, mit welcher Sprache genau du anfangen möchtest.
 
Okay. Auch wenn dort als Überschrift "C / C++" steht, so beinhaltet das Tutorial, soweit ich das überflogen habe, nur C-Code.
(welcher sich mit 'nem C++-Compiler zwar genauso compilieren lässt, da C++ größtenteils abwärtskompatibel zu C ist - aber das, was du in dem Tutorial lernst, ist auf jeden Fall reines C)

Also lernst du wohl doch erstmal C und Dinge wie Namespaces, Objekt-Orientierung und was es noch alles schönes in C++ dann gibt, kommen dann irgendwann später mal... ;)
 
printf() ist aber eine Funktion die ich nicht missen will^^.
cout sux't einfach - Also printf. Oder gibt es eine C++-Alternative für printf()?
 
printf() ist aber eine Funktion die ich nicht missen will^^.
cout sux't einfach - Also printf. Oder gibt es eine C++-Alternative für printf()?

Ich bin mir nicht sicher doch statt printf() benutzt man in c++

"cout" Hier ein Beispiel

Code:
#Include <iostream>

unsing namespace std;

int main()
{
  cout << " Text..." << endl;
  return 0;
}
 
1.) Dass es sprintf() mit dem gleichen Syntax gibt,
2.) printf("0x%08X",d); usw - könnte ich jetzt nicht mal eben in cout << umwandeln
3.) printf ist kürzer^^
 
Zurück
Oben