<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Veränderter Variablenwert nach Ausgabe (printf)?]]></title><description><![CDATA[<p>Hallo zusammen ...</p>
<p>Da eins meiner kleinen Programme zZ nicht so recht funktioniert hab ich mal etwas rumgespielt. Dabei hab ich spaßenshalber auch ein paar Sachen probiert, welche man eigentlich nicht macht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Dabei ist mir etwas sehr komisches aufgefallen...</p>
<pre><code class="language-cpp">m=7;
printf(&quot;%f %d\n&quot;,m,m);
</code></pre>
<p>Erwartete Ausgabe: &quot;x.xxxxxx 7&quot;<br />
(die x stehen für ne beliebige Zahl)</p>
<p>Wirkliche Ausgabe: &quot;0.000000 1778324347&quot;</p>
<p>Ändere ich den Quellcode wieder zu</p>
<pre><code class="language-cpp">m=7;
printf(&quot;%d %d\n&quot;,m,m);
</code></pre>
<p>Erhalte ich die erwarteten &quot;7 7&quot;.<br />
Es scheint also so, alsob die Variable durch die Ausgabe im falschen Format verändert wird!<br />
Ist sowas normal? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vielen Dank für euere Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269318/veränderter-variablenwert-nach-ausgabe-printf</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 06:57:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269318.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jun 2010 08:26:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 08:26:18 GMT]]></title><description><![CDATA[<p>Hallo zusammen ...</p>
<p>Da eins meiner kleinen Programme zZ nicht so recht funktioniert hab ich mal etwas rumgespielt. Dabei hab ich spaßenshalber auch ein paar Sachen probiert, welche man eigentlich nicht macht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Dabei ist mir etwas sehr komisches aufgefallen...</p>
<pre><code class="language-cpp">m=7;
printf(&quot;%f %d\n&quot;,m,m);
</code></pre>
<p>Erwartete Ausgabe: &quot;x.xxxxxx 7&quot;<br />
(die x stehen für ne beliebige Zahl)</p>
<p>Wirkliche Ausgabe: &quot;0.000000 1778324347&quot;</p>
<p>Ändere ich den Quellcode wieder zu</p>
<pre><code class="language-cpp">m=7;
printf(&quot;%d %d\n&quot;,m,m);
</code></pre>
<p>Erhalte ich die erwarteten &quot;7 7&quot;.<br />
Es scheint also so, alsob die Variable durch die Ausgabe im falschen Format verändert wird!<br />
Ist sowas normal? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vielen Dank für euere Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916119</guid><dc:creator><![CDATA[Mandel]]></dc:creator><pubDate>Wed, 23 Jun 2010 08:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 08:29:53 GMT]]></title><description><![CDATA[<p>Durch das falsche Format erhälst du undefiniertes Verhalten. Da kann theoretisch *alles* passieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916121</guid><dc:creator><![CDATA[Oberon_0]]></dc:creator><pubDate>Wed, 23 Jun 2010 08:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 08:49:44 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Also ich hätte schon gedacht, dass es da irgend nen Sicherheitsmechanismus gibt, welcher dafür sorgt, dass zumindest die Daten nicht verändert werde, wenn schon die Ausgabe murks ist...</p>
<p>Ich werds berücksichtigen...</p>
<p>Aber warum kann ich dann zB einen char ohne Probleme aus Zahl ausgeben lassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916136</guid><dc:creator><![CDATA[Mandel]]></dc:creator><pubDate>Wed, 23 Jun 2010 08:49:44 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 08:58:07 GMT]]></title><description><![CDATA[<p>Mandel schrieb:</p>
<blockquote>
<p>Also ich hätte schon gedacht, dass es da irgend nen Sicherheitsmechanismus gibt, welcher dafür sorgt, dass zumindest die Daten nicht verändert werde, wenn schon die Ausgabe murks ist...</p>
</blockquote>
<p>Wie kommst du darauf, dass die Daten verändert werden?</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916143</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 23 Jun 2010 08:58:07 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 09:03:26 GMT]]></title><description><![CDATA[<p>Mandel schrieb:</p>
<blockquote>
<p>Aber warum kann ich dann zB einen char ohne Probleme aus Zahl ausgeben lassen?</p>
</blockquote>
<p>1. Weil char auch ein Integertyp ist (Je nach Compiler entweder unsigned oder signed mit in der Regel 8 Bit Länge - Sprich entweder 0..255 oder -128..+127).<br />
2. Weil du vielleicht auch mit anderen Ausgaben Glück haben kannst, aber genauso gut Probleme bekommen könntest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916146</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 23 Jun 2010 09:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 10:01:52 GMT]]></title><description><![CDATA[<p>Mandel schrieb:</p>
<blockquote>
<p>Also ich hätte schon gedacht, dass es da irgend nen Sicherheitsmechanismus gibt [...]</p>
</blockquote>
<p>Was die C-Funktionen betrifft, siehts bezüglich Sicherheit relativ schlecht aus. Du musst entweder gut aufpassen oder C++-Äquivalente ( <code>std::cout</code> ) benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916180</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Jun 2010 10:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 10:43:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>printf ist eine Funktion mit variabler Anzahl von Parametern. Außer dem Formatstring weiß der Compiler daher nicht, welche Parametertypen die Funktion erwartet. Sie werden daher so übergeben, wie sie kommen, wobei aber floats automatisch nach double konvertiert werden.</p>
<p>printf erwartet nun, daß die Variablen genau so übergeben werden, wie sie mit dem Formatstring angekündigt wurden. Wenn Du lügst, bekommst Du halt Unsinn geliefert.</p>
<p>Moderne Compiler kennen zwar diese Problematik und analysieren den Formatstring. Das ist aber nicht vom Standard gefordert und daher darfst Du dich darauf nicht verlassen, zumal das auch nur dann funktionieren wird, wenn der Formatstring als Literal übergeben wurde.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916207</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 23 Jun 2010 10:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Veränderter Variablenwert nach Ausgabe (printf)? on Wed, 23 Jun 2010 12:04:16 GMT]]></title><description><![CDATA[<p>Für typsichere formatierte Ausgabe ähnlich wie <code>printf()</code> gäbe es auch <em><a href="http://www.boost.org/doc/libs/1_34_1/libs/format/index.html" rel="nofollow">Boost.Format</a></em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916254</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Jun 2010 12:04:16 GMT</pubDate></item></channel></rss>