Zum Inhalt springen

Welcher Wert gibt %d aus?


Crash2001

Empfohlene Beiträge

Hi

Ich habe grad erst angefangen mit C und bin beim Variablen auslesen darauf gestossen, dass wenn man %d öfter benutzt, als man Variablen hat, da voll die komischen Werte rauskommen. Also z.b.:

.

.

.

int i, j;

i=23;

j=50+i;

printf(" Variable1 = %d \n" "Variable2 = %d\n"

"Und hier faengts an %d \n";

.

.

.

Weiss vielleicht jemand, was das für koische Werte sind und woran das liegt? Meine Ausbilder konnten mir da auch nichts zu sagen.

MfG Crash2001 :)

<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 10:53: Beitrag 2 mal editiert, zuletzt von Crash2001 ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

int i, j;

i=23;

j=50+i;

printf(" Variable1 = %d \n" "Variable2 = %d\n"

"Und hier faengts an %d \n";

j is schon vorbelegt, nämlich mit 50+i, das müßte eigentlich funktionieren.

printf(" Variable1 = %d\n Variable2= %d\n und hier faengts an %d \n", i,j,10);

müßte eigentlich ausgeben:

"Variable1 = 23

Variable2 = 73

und hier faengts an 10

"

Das %d ist nur ein Platzhalter für die Variablen, die hinter dem String stehen. %d ist für double int soweit ich weiß, dann gibts noch %s für strings und so, schau mal in der MSDN, da steht sicher die genaue Notation

<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 11:05: Beitrag 1 mal editiert, zuletzt von InsanityX ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

@Hasi

Hatte ich gemerkt und noch schnell umgeändert, aber anscheinend hattest du da schon die Seite auf.

@InsanityX

Was ist denn die MSDN? Und wo finde ich die? :confused:

Da hast du dann aber doch die letzte Zahl manuell eingebaut und die ist keine Variable.

Wie mache ich das denn, wenn ich den Wert von i nochmal anzeigen lassen will? Muss ich dann dahinter in der Klammer noch i, j, i schreiben oder wie?

MfG Crash2001 :)

<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 11:25: Beitrag 1 mal editiert, zuletzt von Crash2001 ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crash2001:

<STRONG>@InsanityX

Was ist denn die MSDN? Und wo finde ich die? :confused:

Da hast du dann aber doch die letzte Zahl manuell eingebaut und die ist keine Variable.

Wie mache ich das denn, wenn ich den Wert von i nochmal anzeigen lassen will? Muss ich dann dahinter in der Klammer noch i, j, i schreiben oder wie?</STRONG>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie Hasi schon schrieb ist die MSDN eine Libary mit den Hilfen für alle Microsoftentwicklungsprodukte (Microsoft Developer Network. Gibts auch im INet,(http://msdn.microsoft.com) wenn man die 1,3 GB nicht installieren will :). Bei der Standardinstallation von C++ ist nur eine Minimalstversion dabei. Wenn man im Developer Network von Microsoft ist, kriegt man vierteljährlich CDs wo das Zeug drauf ist.

Wenn Du noch fragen hast ICQ (93911832), geht manchmal schneller als übers Forum

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Danke erstmal für die Antwort.

Aber was für Werte zeigt der denn dann an beim dritten und vierten %d an, wenn ich dahinter nicht die zu benutzenden Variablen hinschreibe? Weiss das vielleicht noch jemand? Ich schau jetzt erst nochmal in der Hilfe nach. Vielleicht finde ich das da ja.

MfG Crash2001 :)

<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 11:46: Beitrag 1 mal editiert, zuletzt von Crash2001 ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Crash2001,

was ist das bitte schön für ein fragmentarisches code-Fragment - wenn du solche Anfragen postest, dann wäre es schön, wenn du zumindest die Klammern der Funktionsaufrufe schließt.

Was hast du eigentlich für unfähige Ausbilder, das ist nun wirklich grundlegendes Wissen ?

OK, genug gemeckert:

printf ist deklariert als

int printf( const char*, ... );

Es ist damit eine sogenannte Ellipsenfuktion, was heißt, die Parameteranzahl ist nicht festgelegt. Daher kann der Compiler auch keinerlei Typ-Überprüfung der Parameter vornehmen (höchstens des const char*), es ist in der Verantwortung des Programmierers, diese richtig zu übergeben.

Wenn du dich nicht an die Regeln hältst, wird dein Compiler nicht maulen, aber zur Laufzeit wirst du dann Überraschungen erleben - aber das hast du ja schon :-)

Was den Tip meiner Vorschreiber bez. MSDN angeht:

Vergiß es, es ist eine über weite Strecken miserable Hilfe, die dir leider einiges an Vorwissen abverlangt. NB: zu printf() ist es nicht gerade aussagestark, hab gerade mal nachgeschaut.

Wenn du wirklich C lernen willst, besorg dir einen Zugang zu einem Linux-Rechner, über telnet reicht schon. Die man-pages zu den C-Funktionen taugen wirklich was, vor allem wenn du Englisch verstehst, aber das setzte ich bei dir als angehendem IT Profi voraus :-) Wenn ich mich recht erinnere, ist der Aufruf man 3 <funktionsname> , da es da teilweise Namensgleichheiten mit Shell-Komandos gibt, weswegen man die Serie der manpages mit angeben muß.

Linux ist sowieso ein heißer Tip für C-Programmierung, da der Blick darauf, was dein Compiler mach, nicht so verstellt ist, wenn du ihn auf der Kommandozeile aufrufst. Kann ich nur wärmstens empfehlen.

Der Käptn

Link zu diesem Kommentar
Auf anderen Seiten teilen

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von captain haddock:

<STRONG>Hi Crash2001,

was ist das bitte schön für ein fragmentarisches code-Fragment - wenn du solche Anfragen postest, dann wäre es schön, wenn du zumindest die Klammern der Funktionsaufrufe schließt. ...

</STRONG>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach so,

wenn du leider, leider auf eine Windows Kiste festgenagelt bist, es gibt eine Unix-Umgebung, die du dir unter Windoze installieren kannst, nennt sich cygwin, Näheres unter cygwin. Das bring neben einer bash, inklusive diverser schöner Sachen wie grep etc., auch den gcc und eben alle einschlägigen manpages mit. Ein *Muß* auf jedem Entwicklerrechner.

Wenn du willst, kann ich dir die manpage zu printf schicken. Das ist auch eine der kniffligeren Funktionen der Standardbibliothek. Aber scanf() ist noch räudiger :-)

Der Käptn

Link zu diesem Kommentar
Auf anderen Seiten teilen

<offtopic>

Linux ist aber auch nicht die Lösung auf alle fragen. Man kann doch nicht immer auf alles mit Linux als Antwort kommen. Es gibt mehr als genug Beispiele (in der Wirtschaft sicherlich sogar mehr Win als Linux) wo man auf Win bleiben MUSS!!! Alleine um einen Standard als Grundlage zu haben. Ich habe meine Ausbildung im Juni beendet und bin in einem der größten deutschen Softwarehäuser beschäftigt. Ich schätze, daß ungefähr 1-2% unserer Kunden bereit und in der Lage wären auf Linux umzusteigen. Deshalb müssen wir auf Win entwickeln, Und ehrlich gesagt, ist mir das lieber, auch wenn ich jetzt wieder von den einschlägigen Seiten beschimpft werde. Die Linux/Suse oder sonstwie Gemeinde behauptet doch sooo tolerant zu sein, aber jeder, der im Programmierumfeld tätig ist, und Linux meidet, weil er es nicht mag oder so, ist sofort bei Euch unten durch!!!

</offtopic>

UNd nun zum Thema:

Es gibt einen Teil der MSDN auch auf Deutsch, allerdings beschissen übersetzt und schwerer verständlich als auf English...

Link zu diesem Kommentar
Auf anderen Seiten teilen

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von captain haddock:

<STRONG>...Wenn du willst, kann ich dir die manpage zu printf schicken. Das ist auch eine der kniffligeren Funktionen der Standardbibliothek. Aber scanf() ist noch räudiger :-)

Der Käptn</STRONG>

Link zu diesem Kommentar
Auf anderen Seiten teilen

@captain...

Hier mal ein Auszug auch meinem Test-Code:

int main(int)

{

long signed int i, j;

i=010;

//010 oktal = 8 dezimal

j=i;

j=j + 0xff;

// 0xff hexadezimal = 255 dezimal

j=j * 2;

printf("J hat den Dezimal-Wert %d \n"

"I hat den Dezimal-Wert %d \n");

getchar();

}

Reicht dir das jetzt so?

MfG Crash2001 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@InsanityX

Linux ist *eine* Antwort auf *eine* Frage, ich habe ja noch eine andere Anwort dazu gegeben. VC++ z.B. verleitet dich dazu, eben nicht cl.exe mit allen notwendigen Schalter auf der Kommandozeile aufzurufen, die meisten Leute wissen wahrscheinlich gar nicht, daß das überhaupt geht. Warum auch, wenn ich doch Buttons klicken kann.

Das gilt auch für weitere spannende Dinge die Programmierer beherrschen sollten, wie den Umgang mit Archiven, Libraries, makefiles... Da muß ein Programmierer definitiv mehr wissen, als welchen Button man drückt, was leider durch IDEs gefördert wird. Diese erleichtern gewiß vieles und ich benutze auch eine, aber ich sollte doch wisen, *was* sie mir erleichtert.

Mit Linux lernt man oft mehr, manchmal natürlich unter Schweiß und Tränen... Das Verständnis für Programmierung, das ich unter Linux erworben habe, kann ich aber unter Windows prima einsetzen, was ich auch z.Zt. tue.

Und tools wie grep, auf die ich nicht verzichten möchte, kommen nun mal aus jener Ecke. Wie durchsuchst du bitte schön headerfiles, mit Zeilennummern etc. oder so ? Man muß doch ein bißchen mehr draufhaben als Klicki-Bunti, auch als Windows-Programmierer.

Und nochmal:

was C angeht, ist die MSDN Library ein D***k gegen die manpages. Ich hole mir doch die Information von da, wo ich am meisten mit anfangen kann.

Der Käptn

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...