<?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[Was gibt dieser Code auf dem Bildschirm aus?]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;
using namespace std;

int main() 
{
    string s = &quot;hallo&quot;;
    const char *a = s.c_str();
    volatile const char *b = s.c_str();

    cout &lt;&lt; a &lt;&lt; endl;
    cout &lt;&lt; b &lt;&lt; endl;

    puts(a);
    puts((const char*)b); // compiled nicht ohne volatile wegzucasten

    printf (&quot;%s\n&quot;, a);
    printf (&quot;%s\n&quot;, b);
}
</code></pre>
<p>6 Zeilen, in denen &quot;hallo&quot; steht, oder? <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/topic/339049/was-gibt-dieser-code-auf-dem-bildschirm-aus</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 13:09:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339049.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jul 2016 18:41:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 18:41:23 GMT]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;
using namespace std;

int main() 
{
    string s = &quot;hallo&quot;;
    const char *a = s.c_str();
    volatile const char *b = s.c_str();

    cout &lt;&lt; a &lt;&lt; endl;
    cout &lt;&lt; b &lt;&lt; endl;

    puts(a);
    puts((const char*)b); // compiled nicht ohne volatile wegzucasten

    printf (&quot;%s\n&quot;, a);
    printf (&quot;%s\n&quot;, b);
}
</code></pre>
<p>6 Zeilen, in denen &quot;hallo&quot; steht, oder? <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/2503966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503966</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Fri, 29 Jul 2016 18:41:23 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 18:43:41 GMT]]></title><description><![CDATA[<p>Hm, das hätt ich jetzt auch nicht gedacht.<br />
Warum wohl?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503967</guid><dc:creator><![CDATA[dieNull]]></dc:creator><pubDate>Fri, 29 Jul 2016 18:43:41 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 18:44:59 GMT]]></title><description><![CDATA[<p>dieNull schrieb:</p>
<blockquote>
<p>Hm, das hätt ich jetzt auch nicht gedacht.<br />
Warum wohl?</p>
</blockquote>
<p>Ist mir auch ein Rätsel. Aber bestimmt kennt jemand die Antwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503968</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Fri, 29 Jul 2016 18:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 18:57:33 GMT]]></title><description><![CDATA[<p>Ah, habs raus. Google is your friend <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<pre><code class="language-cpp">void f(const char* ) {}

int main(){
    volatile const char s[] = &quot;hello&quot;;
    f(s);
}
</code></pre>
<pre><code>candidate function not viable: no known conversion from 'const volatile char [6]' to 'const char *' for 1st argument
void f(const char* ) {}
     ^
</code></pre>
<p>Und da es bei operator&lt;&lt; des cout's wohl mehrere Überladungen gibt, nimmt er wohl die von bool. Genauso wie wenn man versucht einen Funktionspointer ohne ins void* zu casten auszugeben. Gibt dir auch ne Eins aus.</p>
<p>Was ich jedoch nicht verstehe, ist warum folgendes jedoch valide ist:</p>
<pre><code class="language-cpp">volatile int x = 10;
int y = x;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2503972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503972</guid><dc:creator><![CDATA[dieNull]]></dc:creator><pubDate>Fri, 29 Jul 2016 18:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 18:58:28 GMT]]></title><description><![CDATA[<p>Wenn man schreibt:</p>
<pre><code>cout &lt;&lt; *b &lt;&lt; endl;
</code></pre>
<p>kommt ein 'h', wie zu erwarten.<br />
Aber</p>
<pre><code>cout &lt;&lt; b &lt;&lt; endl;
</code></pre>
<p>haut nicht hin. Und das hängt mit volatile zusammen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503973</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Fri, 29 Jul 2016 18:58:28 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 19:08:30 GMT]]></title><description><![CDATA[<p>dieNull schrieb:</p>
<blockquote>
<p>Und da es bei operator&lt;&lt; des cout's wohl mehrere Überladungen gibt, nimmt er wohl die von bool.</p>
</blockquote>
<p>Danke, das wird die Erklärung sein. Bei ...</p>
<pre><code>volatile const char *b = 0;
    cout &lt;&lt; b &lt;&lt; endl;
</code></pre>
<p>... gibt er 0 aus. Er dereferenziert den Pointer also nicht, was crashen würde.</p>
<p>Aber irreführend ist das ganze irgendwie schon. Dem operator&lt;&lt; müsste eine Überladung für &quot;volatile char*&quot; spendiert werden. Seltsam, dass das vergessen wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503975</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Fri, 29 Jul 2016 19:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 19:12:14 GMT]]></title><description><![CDATA[<p>dieNull schrieb:</p>
<blockquote>
<p>Was ich jedoch nicht verstehe, ist warum folgendes jedoch valide ist:</p>
<pre><code class="language-cpp">volatile int x = 10;
int y = x;
</code></pre>
</blockquote>
<p>y wird mit dem Wert initialisiert, der sich gerade in x befindet. Warum sollte das nicht gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503976</guid><dc:creator><![CDATA[Andromeda]]></dc:creator><pubDate>Fri, 29 Jul 2016 19:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 19:27:46 GMT]]></title><description><![CDATA[<p>Andromeda schrieb:</p>
<blockquote>
<p>y wird mit dem Wert initialisiert, der sich gerade in x befindet. Warum sollte das nicht gehen?</p>
</blockquote>
<p>Na</p>
<pre><code class="language-cpp">volatile const char s[] = &quot;hello&quot;;
    const char* p = s;
</code></pre>
<p>kompiliert nicht, während das Beispiel von vorhin halt kompiliert.</p>
<p>Und mit</p>
<pre><code class="language-cpp">volatile int* x = nullptr;
    int* y = x;
</code></pre>
<p>das selbe, klappt nicht.</p>
<p>Also bezieht sich das mit dem &quot;geht nicht&quot; wohl nur auf Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503981</guid><dc:creator><![CDATA[dieNull]]></dc:creator><pubDate>Fri, 29 Jul 2016 19:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 20:02:24 GMT]]></title><description><![CDATA[<p>Beachte, wo <code>volatile</code> bei der Zeigerdefinition steht. Hier ist nicht der Zeiger selbst volatile, sondern der Wert, worauf er zeigt, kann flüchtig sein. Weist du ihn einem anderen Zeiger ohne <code>volatile</code> zu, geht der Compiler beim zugreifen über diesen davon aus, dass das Ziel nicht flüchtig ist. <code>volatile</code> ist ein Qualifizierer wie <code>const</code> , der kann nicht einfach implizit weggecastet werden.<br />
Folgendes ginge:</p>
<pre><code class="language-cpp">char *volatile p = ... //der Zeiger selbst ist volatile, nicht das, worauf er zeigt.
char *a = p;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2503986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503986</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Fri, 29 Jul 2016 20:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 20:04:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">volatile int vi = 42;
int i = vi;
</code></pre>
<p>dasselbe mit zeigern:</p>
<pre><code class="language-cpp">int* volatile vpi = ...;
int* pi = vpi;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2503987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503987</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Fri, 29 Jul 2016 20:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to Was gibt dieser Code auf dem Bildschirm aus? on Fri, 29 Jul 2016 20:14:09 GMT]]></title><description><![CDATA[<p>Ahhh.<br />
Gerafft, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2503988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2503988</guid><dc:creator><![CDATA[dieNull]]></dc:creator><pubDate>Fri, 29 Jul 2016 20:14:09 GMT</pubDate></item></channel></rss>