Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C++ Hexadezimal-Problem

Diskussion: C++ Hexadezimal-Problem im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, Ich habe folgendes Problem wenn ich den Code eingebe: #include <stdio.h> #include <stdlib.h> int main() { int i ...

Antwort
Alt 29.12.10, 13:34   #1 (permalink)
 
Registriert seit: 26.12.10
JeyFox Leistung: Facit NTK
Likes: 0
Angry C++ Hexadezimal-Problem

Anzeige

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 (:

__________________
Jedes Programm,
in das sich ein Fehler einschleichen kann,
wird auch einen enthalten.
JeyFox ist offline   Mit Zitat antworten
Alt 29.12.10, 13:40   #2 (permalink)
 
Registriert seit: 09.12.09
Thunder11 Leistung: Z3
Likes: 0
Standard

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;
__________________
B4 09 BA 08 01 CD 21 C3 48 61 6C 6C 6F 20 57 65 6C 74 21 24

Geändert von Thunder11 (29.12.10 um 14:49 Uhr)
Thunder11 ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 29.12.10, 13:58   #3 (permalink)
Themenstarter
 
Registriert seit: 26.12.10
JeyFox Leistung: Facit NTK
Likes: 0
Standard

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.
Aber es würde mich trotzdem mal Interessieren.

mfg. JeyFox
__________________
Jedes Programm,
in das sich ein Fehler einschleichen kann,
wird auch einen enthalten.
JeyFox ist offline   Mit Zitat antworten
Alt 29.12.10, 14:31   #4 (permalink)
 
Benutzerbild von benediktibk
 
Registriert seit: 03.05.07
benediktibk Leistung: 8086benediktibk Leistung: 8086
Likes: 50
Standard

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
benediktibk ist offline   Mit Zitat antworten
Alt 29.12.10, 14:31   #5 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

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 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.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
Alt 29.12.10, 14:34   #6 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

Zitat:
Zitat von JeyFox Beitrag anzeigen
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
beavisbee ist offline   Mit Zitat antworten
Alt 29.12.10, 14:50   #7 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Das 0x manuell davor zu schreiben ist die eine Möglichkeit. Man kann aber auch %#x als Formatstring benutzen.

http://www.cplusplus.com/reference/c...cstdio/printf/
Thunderb0lt ist offline   Mit Zitat antworten
Alt 29.12.10, 14:52   #8 (permalink)
Member of Honour
 
Benutzerbild von +++ATH0
 
Registriert seit: 02.04.05
+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3
Likes: 76
Standard

Code:
printf("Hexadezimal i: 0x%X\n", i);
+++ATH0 ist offline   Mit Zitat antworten
Alt 29.12.10, 15:21   #9 (permalink)
 
Benutzerbild von MemoryMatt
 
Registriert seit: 14.12.10
MemoryMatt Leistung: Z3
Likes: 0
Standard

Zitat:
Zitat von JeyFox Beitrag anzeigen
#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;
}

Geändert von MemoryMatt (29.12.10 um 15:28 Uhr)
MemoryMatt ist offline   Mit Zitat antworten
Alt 29.12.10, 15:54   #10 (permalink)
Themenstarter
 
Registriert seit: 26.12.10
JeyFox Leistung: Facit NTK
Likes: 0
Standard

Ja eigentlich sollte es C++ sein
Aber wozu dient der Befehl using namespace std ??

mfg. JeyFox
__________________
Jedes Programm,
in das sich ein Fehler einschleichen kann,
wird auch einen enthalten.
JeyFox ist offline   Mit Zitat antworten
Alt 29.12.10, 16:03   #11 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

Zitat:
Zitat von JeyFox Beitrag anzeigen
Ja eigentlich sollte es C++ sein
Betonung liegt auf SOLLTE...
Was du schreibst, ist jedoch eigentlich ehr C...

Zitat:
Zitat von JeyFox Beitrag anzeigen
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.
beavisbee ist offline   Mit Zitat antworten
Alt 29.12.10, 16:22   #12 (permalink)
Themenstarter
 
Registriert seit: 26.12.10
JeyFox Leistung: Facit NTK
Likes: 0
Standard

hier ist die seite wo ich die Tutorials her habe
http://www.tutorials.at/c/03-dateneingabe-ausgabe.html
__________________
Jedes Programm,
in das sich ein Fehler einschleichen kann,
wird auch einen enthalten.
JeyFox ist offline   Mit Zitat antworten
Alt 29.12.10, 17:38   #13 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

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...
beavisbee ist offline   Mit Zitat antworten
Alt 29.12.10, 18:49   #14 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

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()?
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Alt 29.12.10, 19:10   #15 (permalink)
Themenstarter
 
Registriert seit: 26.12.10
JeyFox Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von ChiefWiggum Beitrag anzeigen
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;
}
__________________
Jedes Programm,
in das sich ein Fehler einschleichen kann,
wird auch einen enthalten.
JeyFox ist offline   Mit Zitat antworten
Antwort

Stichworte
hexadezimal, problem
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C++ Hexadezimal-Problem
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61