Crash2001 Geschrieben 29. August 2001 Geschrieben 29. August 2001 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> Zitieren
Hasi Geschrieben 29. August 2001 Geschrieben 29. August 2001 hups da war ich zu schnell mit dem antworten <FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 11:30: Beitrag 1 mal editiert, zuletzt von Hasi ]</font> Zitieren
InsanityX Geschrieben 29. August 2001 Geschrieben 29. August 2001 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> Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 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> Zitieren
Hasi Geschrieben 29. August 2001 Geschrieben 29. August 2001 <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> Zitieren
InsanityX Geschrieben 29. August 2001 Geschrieben 29. August 2001 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 Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 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> Zitieren
InsanityX Geschrieben 29. August 2001 Geschrieben 29. August 2001 Dürfte wohl ne Fehlermeldung liefern oder die restlichen %d, %s, %i oder was auch immer werden ignoriert... Zitieren
Net-srac Geschrieben 29. August 2001 Geschrieben 29. August 2001 Wie kommt man denn ins MSDN?? Muß man da Geld bezahlen? Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 Hi @InsanityX: Ääähm... gibts das auch in deutsch? Ich kann zwar englisch, aber auf deutsch ists mir dann doch lieber. MfG Crash2001 <FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 11:53: Beitrag 1 mal editiert, zuletzt von Crash2001 ]</font> Zitieren
Hasi Geschrieben 29. August 2001 Geschrieben 29. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von FaFo: <STRONG>Wie kommt man denn ins MSDN?? Muß man da Geld bezahlen?</STRONG> Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Hasi: <STRONG>...ich denke nicht dass es die auf deutsch gibt und selbst wenn sind die englischen beschreibungen besser</STRONG> Zitieren
Net-srac Geschrieben 29. August 2001 Geschrieben 29. August 2001 coden tust du doch aber auch in englisch oder? Zitieren
haddock Geschrieben 29. August 2001 Geschrieben 29. August 2001 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 Zitieren
Hasi Geschrieben 29. August 2001 Geschrieben 29. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von captain haddock: <STRONG>Was hast du eigentlich für unfähige Ausbilder, das ist nun wirklich grundlegendes Wissen ?</STRONG> Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 <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> Zitieren
haddock Geschrieben 29. August 2001 Geschrieben 29. August 2001 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 Zitieren
InsanityX Geschrieben 29. August 2001 Geschrieben 29. August 2001 <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... Zitieren
haddock Geschrieben 29. August 2001 Geschrieben 29. August 2001 @Crash2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Ich wollte hier doch nicht den gesamten Code posten, sondern nur das, worauf es ankommt. Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 <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> Zitieren
Hasi Geschrieben 29. August 2001 Geschrieben 29. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crash2001: <STRONG>Mach das mal bitte. e-mail: crash2001@gmx.de</STRONG> Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 @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 Zitieren
haddock Geschrieben 29. August 2001 Geschrieben 29. August 2001 @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 Zitieren
Drarak Geschrieben 29. August 2001 Geschrieben 29. August 2001 Versuchs mal so: printf("J hat den Dezimal-Wert %d \n I hat den Dezimal-Wert %d \n",j,i); gruß Drarak <FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 13:03: Beitrag 1 mal editiert, zuletzt von [AAC]Drarak ]</font> Zitieren
Crash2001 Geschrieben 29. August 2001 Autor Geschrieben 29. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von [AAC]Drarak: <STRONG>Versuchs mal so: printf("J hat den Dezimal-Wert %d \n I hat den Dezimal-Wert %d \n",j,i); gruß Drarak</STRONG> Zitieren
Empfohlene Beiträge
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.