<?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[Undefiniert?]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Dieses Verhalten ist doch nicht undefiniert, oder?</p>
<pre><code class="language-cpp">int main()
{	
	unsigned char arr[512];

	for(unsigned i = 0; i &lt; 512; ++i)
		cout &lt;&lt; static_cast&lt;int&gt;(arr[i]) &lt;&lt; &quot;, &quot;;
}
</code></pre>
<p>Denn der Speicher wurde ja schon für mich reserviert, was noch drin steht ist doch egal (wenn es für mein Programm auch egal ist), oder etwa nicht?<br />
Klar, dass Blödsinn drin steht, aber ein Absturz kann durch das lesen des Wertes nicht passieren, oder?</p>
<p>Der Hintergrund ist, dass ich mir Initialisierungen sparen möchte, da ich eventuell bestimmte Werte vom Array nicht verwende.</p>
<p>Ich bedanke mich im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226683/undefiniert</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 16:37:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226683.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Nov 2008 16:19:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:19:06 GMT]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Dieses Verhalten ist doch nicht undefiniert, oder?</p>
<pre><code class="language-cpp">int main()
{	
	unsigned char arr[512];

	for(unsigned i = 0; i &lt; 512; ++i)
		cout &lt;&lt; static_cast&lt;int&gt;(arr[i]) &lt;&lt; &quot;, &quot;;
}
</code></pre>
<p>Denn der Speicher wurde ja schon für mich reserviert, was noch drin steht ist doch egal (wenn es für mein Programm auch egal ist), oder etwa nicht?<br />
Klar, dass Blödsinn drin steht, aber ein Absturz kann durch das lesen des Wertes nicht passieren, oder?</p>
<p>Der Hintergrund ist, dass ich mir Initialisierungen sparen möchte, da ich eventuell bestimmte Werte vom Array nicht verwende.</p>
<p>Ich bedanke mich im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610124</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:26:10 GMT]]></title><description><![CDATA[<p>wie kommt man auf solchen blödsinn?<br />
aber k.a. was passiert wenn aus versehen das zeichen für den pc-speaker erwischst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610131</guid><dc:creator><![CDATA[jhkj]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:26:10 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:30:25 GMT]]></title><description><![CDATA[<p>Initialisierungen sparen ist Blödsinn? Aha...</p>
<p>Wenn ich einen Buffer von 512 Bytes habe, in einem bestimmten Durchgang aber nur 3 Bytes beschreibe und beispielsweise per socket versende, spare ich mir so die Initialisierung, da ich zB. mit dem letzten Byte die Größe 3 mitsende und somit auf Empfangsseite auch nur 3 Bytes einlese.</p>
<p>Somit müsste ich den Buffer nie initialisieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610134</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:32:22 GMT]]></title><description><![CDATA[<p>Nepomuk schrieb:</p>
<blockquote>
<p>, was noch drin steht ist doch egal (wenn es für mein Programm auch egal ist), oder etwa nicht?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1610136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610136</guid><dc:creator><![CDATA[hjjh]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:35:19 GMT]]></title><description><![CDATA[<p>Sicher?</p>
<p>Im Debugmodus bekomme ich &quot;uninitialized local variable used&quot;, aber nur bei einzelnen Variablen, nicht aber bei Arrays... und das ist ja auch nur ne Warnung, welche allerdings im Debugmodus zum Programmende führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610139</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:35:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also bei mir funktioniert das Programm. Ich bekomme auch keinen Fehler/keine Warnmeldung bem Kompilieren. Mich würde nur interessieren warum unsinged als Typangabe ausreicht (siehe Forschleife: unsinged i; ... )</p>
<p>Mit freundlichen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610142</guid><dc:creator><![CDATA[DerRatlose]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:37:45 GMT]]></title><description><![CDATA[<p>hm, Ich glaube da dürfte nichts Initialisiert werden was es nicht darf.<br />
Es dürfte nicht zum Absturz kommen.</p>
<p>Aber meinst du, die Zeit die du sparst, lohnt der Absicherung wegen? Die 512 nullen sind ja schnell initialisiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610143</guid><dc:creator><![CDATA[XHansWurstX]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:42:04 GMT]]></title><description><![CDATA[<p>DerRatlose schrieb:</p>
<blockquote>
<p>also bei mir funktioniert das Programm. Ich bekomme auch keinen Fehler/keine Warnmeldung bem Kompilieren.</p>
</blockquote>
<p>Ja, deshalb frage ich ja ob es eventuell undefiniert ist.</p>
<p>DerRatlose schrieb:</p>
<blockquote>
<p>Mich würde nur interessieren warum unsinged als Typangabe ausreicht</p>
</blockquote>
<p>(unsigned == unsigned int) is TRUE</p>
<p>XHansWurstX schrieb:</p>
<blockquote>
<p>hm, Ich glaube da dürfte nichts Initialisiert werden was es nicht darf.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610147</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:47:44 GMT]]></title><description><![CDATA[<p>Nepomuk schrieb:</p>
<blockquote>
<p>Hey Leute!</p>
<p>Dieses Verhalten ist doch nicht undefiniert, oder?<br />
...<br />
was noch drin steht ist doch egal ...</p>
</blockquote>
<p>&quot;egal&quot; != &quot;definiert&quot;<br />
... und was Du unter &quot;Verhalten&quot; verstehst, wäre auch interessant.<br />
Die Ausgabe ist jedenfalls undefiniert. Dass eine Ausgabe passiert (und dass sie den Inhalt von arr ausgibt) ist aber definiert.<br />
(Würde ich aber trotzdem nicht machen. Initialisierungen sind nicht zum &quot;sparen&quot; da)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610153</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:47:44 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 16:51:54 GMT]]></title><description><![CDATA[<p>Na, ja, also ich meine dass das Programm im Release- Build deswegen abstürzen könnte, wenn es auf einen Wert zugreift, welcher noch nicht explizit von mir überschrieben, sondern nur der Speicher dafür reserviert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610156</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 16:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 17:24:25 GMT]]></title><description><![CDATA[<p>Nepomuk schrieb:</p>
<blockquote>
<p>wenn es auf einen Wert zugreift, welcher noch nicht explizit von mir überschrieben, sondern nur der Speicher dafür reserviert wurde.</p>
</blockquote>
<p>Das meinte ich.<br />
Da du den Speicher anforderst, ist er in dem Fall ja für dich vorgesehen.<br />
Afaik wird der Speicherinhalt in diesem fall in ein char gecastet, deshalb entsteht dann dieser ascii-Müll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610168</guid><dc:creator><![CDATA[XHansWurstX]]></dc:creator><pubDate>Tue, 04 Nov 2008 17:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 17:24:47 GMT]]></title><description><![CDATA[<p>Nepomuk schrieb:</p>
<blockquote>
<p>Na, ja, also ich meine dass das Programm im Release- Build deswegen abstürzen könnte, wenn es auf einen Wert zugreift, welcher noch nicht explizit von mir überschrieben, sondern nur der Speicher dafür reserviert wurde.</p>
</blockquote>
<p>Sollte eigentlich nicht passieren. Zumindest bei <code>int</code> steht dann da halt ein willkürliches Bitmuster, das irgendeine Zahl repräsentiert. Bei Fliesskommazahlen gibt es einige Spezialfälle (NaNs etc.), da sollte man schon eher aufpassen. Aber ganz sicher bin ich mir diesbezüglich auch nicht, weil ich selten mit nicht initialisierten Variablen arbeite und noch seltener vorsätzlich.</p>
<p>Aber bist du auch einer von der Sorte &quot;Initialisieren spar ich mir, ich will Performance...&quot;? Es hat nämlich absolut keinen Sinn, lesend auf ein nicht initialisiertes Array zuzugreifen. Die paar Mikrosekunden wirst du wohl schon noch haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610169</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 04 Nov 2008 17:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 17:34:41 GMT]]></title><description><![CDATA[<p>Hmm ok danke, und ihr habt mich überzeugt. Werde davor einfach initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610177</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 17:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 18:05:03 GMT]]></title><description><![CDATA[<p>Moment mal, mir fällt gerade ein, dass im (ich betone) C-Stil keiner ein strcpy o.ä in diesem Fall vor dem sprintf macht:</p>
<pre><code class="language-cpp">int x=100;
char buffer[128];
sprintf(buffer,&quot;%d&quot;,x);     // Ich weiß, C, aber keiner initialisert hier buffer
                            // oder????
</code></pre>
<p>Also muß man nicht initialisieren müssen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610193</guid><dc:creator><![CDATA[XHansWurstX]]></dc:creator><pubDate>Tue, 04 Nov 2008 18:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Undefiniert? on Tue, 04 Nov 2008 18:22:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17521">@XHansWurstX</a><br />
Da wird buffer doch beschrieben, ich meinte aber den Fall, wenn eine reservierte, aber nicht initialisierte Variable gelesen wird. Klar, dass nicht 0 drin stehen wird (sofern nicht global oder Zufall), aber es geht mir ja drum ob es abstürzen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610210</guid><dc:creator><![CDATA[Nepomuk]]></dc:creator><pubDate>Tue, 04 Nov 2008 18:22:17 GMT</pubDate></item></channel></rss>