<?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[Warum läuft dieser Code?]]></title><description><![CDATA[<p>Hallo Comm.,<br />
ich bin ob des folgenden Stücks Code wirklich verwirrt:</p>
<pre><code>void eatspaces(char* str)
{
int i=0;
int j=0;

while( (*(str + i) = *(str + j++)) != '\0')
{
if(*(str + i) != ' ')
{i++};
};
return;
};
</code></pre>
<p>Die Funktion entfernt Blanks (Leerzeichen) aus einem String (habe ich aus Ivor Horton's C++). Was ich daran überhaupt nicht verstanden habe, ist wie (warum) das funktioniert. Denn wenn ich mir die Bedingung in while (..) ansehe, so sollte die Reihenfolge (der Abarbeitung) der Operatoren doch eigentlich folgende sein:</p>
<p>() hat Vorrang, also wird zuerst</p>
<pre><code>(*(str + i) = *(str + j++))
</code></pre>
<p>abgearbeitet. Dann hat noch ++ Vorrang vor +, so dass wir bei</p>
<pre><code>*(str + 0) = *(str + 1)
</code></pre>
<p>landen sollten, oder? Und da fangen meien Probleme schon an. Da steht doch eigentlich etwas unzulässiges, nämlich Value = Value, oder?</p>
<p>Warum funktioniert das? Sind innerhalb der while-Bedingung die Vorrangigkeiten geändert? Ich habe nirgendwo eine Erklärung gefunden.</p>
<p>Könnt ihr mir helfen? Irgendwas habe ich doch mal wieder nicht so richtig verstanden. <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>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228697/warum-läuft-dieser-code</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 10:24:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228697.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Dec 2008 20:11:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum läuft dieser Code? on Mon, 01 Dec 2008 20:11:16 GMT]]></title><description><![CDATA[<p>Hallo Comm.,<br />
ich bin ob des folgenden Stücks Code wirklich verwirrt:</p>
<pre><code>void eatspaces(char* str)
{
int i=0;
int j=0;

while( (*(str + i) = *(str + j++)) != '\0')
{
if(*(str + i) != ' ')
{i++};
};
return;
};
</code></pre>
<p>Die Funktion entfernt Blanks (Leerzeichen) aus einem String (habe ich aus Ivor Horton's C++). Was ich daran überhaupt nicht verstanden habe, ist wie (warum) das funktioniert. Denn wenn ich mir die Bedingung in while (..) ansehe, so sollte die Reihenfolge (der Abarbeitung) der Operatoren doch eigentlich folgende sein:</p>
<p>() hat Vorrang, also wird zuerst</p>
<pre><code>(*(str + i) = *(str + j++))
</code></pre>
<p>abgearbeitet. Dann hat noch ++ Vorrang vor +, so dass wir bei</p>
<pre><code>*(str + 0) = *(str + 1)
</code></pre>
<p>landen sollten, oder? Und da fangen meien Probleme schon an. Da steht doch eigentlich etwas unzulässiges, nämlich Value = Value, oder?</p>
<p>Warum funktioniert das? Sind innerhalb der while-Bedingung die Vorrangigkeiten geändert? Ich habe nirgendwo eine Erklärung gefunden.</p>
<p>Könnt ihr mir helfen? Irgendwas habe ich doch mal wieder nicht so richtig verstanden. <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>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623962</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Mon, 01 Dec 2008 20:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Mon, 01 Dec 2008 20:28:19 GMT]]></title><description><![CDATA[<p>isitthatsimple schrieb:</p>
<blockquote>
<p>() hat Vorrang, also wird zuerst</p>
<pre><code>(*(str + i) = *(str + j++))
</code></pre>
<p>abgearbeitet. Dann hat noch ++ Vorrang vor +, so dass wir bei</p>
<pre><code>*(str + 0) = *(str + 1)
</code></pre>
<p>landen sollten, oder? Und da fangen meien Probleme schon an. Da steht doch eigentlich etwas unzulässiges, nämlich Value = Value, oder?</p>
</blockquote>
<p>Also zuerst mal: str + j++ : j hat ja den Postinkrement-Operator, dh. es wird erst in dem Ausdruck verwendet, mit seinem 'alten Wert', beim ersten Durchlauf also mit 0, und danach inkrementiert. Es findet also im ersten Schleifendurchlauf die Zuweisung *(str + 0) = *(str + 0) statt und erst nach dieser Zuweisung hat j den Wert 1.</p>
<p>Dann: was meinst Du mit Value = Value? Da steht dann letztendlich, was ich gerade beschrieben habe, eine ganz normale Zuweisung, in der eine Zeigervariable - str - mit dem *-Operator dereferenziert wird.<br />
str ist ein Zeiger auf einen Character, mit str + irgendwas wird ein entsprechender Offset auf den Zeiger addiert, so daß er dann auf einen anderen Character zeigt, und mit *str - oder eben auch mit *(str + irgendwas) wird der char, auf den gezeigt wird, angesprochen (gelesen oder beschrieben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623969</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 01 Dec 2008 20:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Mon, 01 Dec 2008 21:03:52 GMT]]></title><description><![CDATA[<p>Betrifft zwar nicht direkt das Thema, aber noch einige Anmerkungen:</p>
<ul>
<li>Bitte [cpp]- statt [code]-Tags verwenden.</li>
<li>Code einrücken erhöht die Lesbarkeit.</li>
<li>Am Ende von Anweisungsblöcken (Funktionen/Schleifen/If-Abfragen) braucht es kein Semikolon (ist aber erlaubt).</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1623985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623985</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Dec 2008 21:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 10:31:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Also zuerst mal: str + j++ : j hat ja den Postinkrement-Operator, dh. es wird erst in dem Ausdruck verwendet, mit seinem 'alten Wert', beim ersten Durchlauf also mit 0, und danach inkrementiert. Es findet also im ersten Schleifendurchlauf die Zuweisung *(str + 0) = *(str + 0) statt und erst nach dieser Zuweisung hat j den Wert 1.</p>
</blockquote>
<p>Aha, das war mir schon mal nicht bewusst. Ich habe angenommen, dass der ++ -Operator Vorrang hat. Hat das speziell mit Konditionen (bedingungen) zu tun? In div. Tabellen hat ++ immer Vorrang vor +. Oder habe ich da eine generelle Lücke (zwischen den anderen Lücken; habe gerade erst mit c++ angefangen)?</p>
<blockquote>
<p>Dann: was meinst Du mit Value = Value? Da steht dann letztendlich, was ich gerade beschrieben habe, eine ganz normale Zuweisung, in der eine Zeigervariable - str - mit dem *-Operator dereferenziert wird.</p>
</blockquote>
<p>Das meine ich ja. Diese Zuweisung kann doch gar nicht funktionieren. Da auf beiden Seiten der Zuweisung dereferenziert wird, muss es doch auf einen Fehler hinauslaufen. Denn wenn rechts ein value steht (also ein konkreter Wert; dereferenziert), dann muss das doch in eine Variable gesteckt werden, zB:</p>
<pre><code class="language-cpp">char neu = *str;
</code></pre>
<blockquote>
<p>str ist ein Zeiger auf einen Character, mit str + irgendwas wird ein entsprechender Offset auf den Zeiger addiert, so daß er dann auf einen anderen Character zeigt, und mit *str - oder eben auch mit *(str + irgendwas) wird der char, auf den gezeigt wird, angesprochen (gelesen oder beschrieben).</p>
</blockquote>
<p>Müsste der Code dann nicht</p>
<pre><code class="language-cpp">(str + 0) = *(str + 0);
</code></pre>
<p>lauten? Also 'Zeiger auf' = 'Wert aus'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624196</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Tue, 02 Dec 2008 10:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 10:40:44 GMT]]></title><description><![CDATA[<p>Frage: merkt der Compiler, auf welcher Seite der Zuweisung er gerade ist? Dann würde</p>
<pre><code class="language-cpp">*str = *str;
</code></pre>
<p>ja Sinn machen, weil er dann einfach den Inhalt (value) aus str an die Speicherstelle von str schreiben könnte. Ich bin davon ausgegangen, dass erstmal beiden Seiten &quot;ausgerechnet&quot; werden, und anschliessend geguckt wird, ob die Zuweisung passt oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624202</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Tue, 02 Dec 2008 10:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 11:48:07 GMT]]></title><description><![CDATA[<p>Stell dir das so vor:</p>
<pre><code class="language-cpp">(*str).operator=(*str);
</code></pre>
<p>Vielleicht wird aber auch alles klarer, wenn man das mal vernünftig aufschreibt!</p>
<pre><code class="language-cpp">void eatspaces(char* str)
{
    int i=0;
    int j=0;

    while( (str[i] = str[j++]) != '\0' ) {
    {
        if( str[i] != ' ') i++;
    }

    return;
};
</code></pre>
<p>Also: Er kopiert solange von Position j auf Position i und erhöht dann j, bis an Position i irgendwas != Leerzeichen steht. Dann erhöht er i um einen. j eilt i sozusagen voraus. Und das ganze macht er solange, bis er auf i ein \0 aka 0-Terminator geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624244</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 02 Dec 2008 11:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 12:03:04 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Stell dir das so vor:</p>
<pre><code class="language-cpp">(*str).operator=(*str);
</code></pre>
<p>Vielleicht wird aber auch alles klarer, wenn man das mal vernünftig aufschreibt!</p>
<pre><code class="language-cpp">void eatspaces(char* str)
{
    int i=0;
    int j=0;

    while( (str[i] = str[j++]) != '\0' ) {
    {
        if( str[i] != ' ') i++;
    }
    
    return;
};
</code></pre>
<p>Also: Er kopiert solange von Position j auf Position i und erhöht dann j, bis an Position i irgendwas != Leerzeichen steht. Dann erhöht er i um einen. j eilt i sozusagen voraus. Und das ganze macht er solange, bis er auf i ein \0 aka 0-Terminator geschrieben hat.</p>
</blockquote>
<p>Alles klar! Astrein, Deinen neuen Code verstehe ich endlich und das, was da eigentlich passiert. Oh mann, diese c++-Syntax macht mich wirklich noch narrisch.</p>
<p>Vielen Dank für die Hilfe! Wieder ein bisschen mehr verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624261</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Tue, 02 Dec 2008 12:03:04 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 13:15:52 GMT]]></title><description><![CDATA[<p>Ist der Codeabschnitt aus einer Übung à la &quot;finden Sie 10 Gründe, warum folgender Code nicht gut ist?&quot;.<br />
Wenn nicht, ist das &quot;return;&quot;, die Semikolons und die Klammern um i++ wirklich so im Original abgedruckt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624303</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Tue, 02 Dec 2008 13:15:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 13:22:45 GMT]]></title><description><![CDATA[<p>Nanyuki schrieb:</p>
<blockquote>
<p>Ist der Codeabschnitt aus einer Übung à la &quot;finden Sie 10 Gründe, warum folgender Code nicht gut ist?&quot;.<br />
Wenn nicht, ist das &quot;return;&quot;, die Semikolons und die Klammern um i++ wirklich so im Original abgedruckt?</p>
</blockquote>
<p>Im Original:</p>
<pre><code class="language-cpp">void eatspaces(char* str)
{
   int i = 0;                             // 'Copy to' index to string
   int j = 0;                             // 'Copy from' index to string

   while((*(str + i) = *(str + j++)) != '\0')  // Loop while character
                                               // copied is not \0
      if(*(str + i) != ' ')                    // Increment i as long as
         i++;                                  // character is not a space
   return;
}
</code></pre>
<p>So oder so ging's mir ja nur um die while-Kondition, die ich bis dato nicht verstanden hatte. Das Buch &quot;Ivor Horton's c++&quot; finde ich persönlich ansonsten ganz gut. Mein M&amp;T-Buch ist dagegen der letzte Schrott.<br />
Naja, dauert dann halt schon etwas, bis ich mich vernünftig eingearbeitet habe. Aber: den obigen Code finde ich - in meinen Anfängeraugen - auch völlig unverständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624311</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Tue, 02 Dec 2008 13:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 13:47:35 GMT]]></title><description><![CDATA[<p>[quote=&quot;isitthatsimple&quot;]</p>
<blockquote>
<p>Ich habe angenommen, dass der ++ -Operator Vorrang hat. Hat das speziell mit Konditionen (bedingungen) zu tun? In div. Tabellen hat ++ immer Vorrang vor +. Oder habe ich da eine generelle Lücke (zwischen den anderen Lücken; habe gerade erst mit c++ angefangen)?</p>
</blockquote>
<pre><code class="language-cpp">int i = 0;
int a = 5;

i = a++;

// jetzt ist i == 5 und a == 6

i = ++a;

// jetzt ist i == 7 und a ebenfalls
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1624339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624339</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 02 Dec 2008 13:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 14:03:32 GMT]]></title><description><![CDATA[<p>Übrigens kann man bei 'int's den Test auf &quot;!= 0&quot; weglassen, das wird automatisch gemacht, wenn ein bool herauskommen soll (den die while-Schleife ja verlangt):</p>
<pre><code class="language-cpp">void eatspaces(char* str)
{
    int i=0, j=0;
    while ( str[i] = str[j++] )
        if ( str[i] != ' ' )
            ++i;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1624352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624352</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 02 Dec 2008 14:03:32 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 14:11:47 GMT]]></title><description><![CDATA[<p>Zumindest mein Compiler würde jedoch bei obigem Code warnen, daß man möglicherweise '=' anstatt &quot;==&quot; verwendet habe. Das Verwenden von &quot;!= 0&quot; dokumentiert die explizite Berücksichtigung dieser Möglichkeit für Compiler sowie für andere Programmierer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624356</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 02 Dec 2008 14:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 14:08:51 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Übrigens kann man bei 'int's den Test auf &quot;!= 0&quot; weglassen, das wird automatisch gemacht, wenn ein bool herauskommen soll (den die while-Schleife ja verlangt):</p>
<pre><code class="language-cpp">void eatspaces(char* str)
{
    int i=0, j=0;
    while ( str[i] = str[j++] )
        if ( str[i] != ' ' )
            ++i;
}
</code></pre>
</blockquote>
<p>Wobei in diesem speziellen Fall ja nach dem EOL (\0) werden soll. Nichtsdestotrotz ist die Notation mit eckigen Klammern (str[i]) irgendwie viel einfacher zu verstehen (für mich zumindest).</p>
<p>Ich hatte mir das, als ich anfing mit einem Projekt (alter C64-Zock) nicht so schwer vorgestellt mit c++. Und OO ist für einen alten 6502er wie mich sowieso nicht sehr einfach. Naja, die Fragen (Bugs) ergeben sich meistens erst zur Laufzeit. Das war früher auch schon so. <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/1624357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624357</guid><dc:creator><![CDATA[isitthatsimple]]></dc:creator><pubDate>Tue, 02 Dec 2008 14:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 15:13:59 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Übrigens kann man bei 'int's den Test auf &quot;!= 0&quot; weglassen, das wird automatisch gemacht, wenn ein bool herauskommen soll</p>
</blockquote>
<p>Würde ich aber trotzdem nicht machen, und zwar aus dem einfachen Grund, dass man nicht gleich sieht, dass auf 0 geprüft wird. Bei Zeigern gilt das selbe...</p>
<p>Bei mehreren Zuweisungen der selben Variable in einem Ausdruck (dazu gehören die Operatoren <code>++</code> , <code>--</code> , <code>+=</code> , <code>-=</code> , etc.) sollte man vorsichtig sein, da das Resultat möglicherweise nicht definiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624420</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 02 Dec 2008 15:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 19:12:24 GMT]]></title><description><![CDATA[<p>Da haschn zonga mit dem for gmacht und musch etzt echt luga dass me alz gaut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624563</guid><dc:creator><![CDATA[swerrt]]></dc:creator><pubDate>Tue, 02 Dec 2008 19:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to Warum läuft dieser Code? on Tue, 02 Dec 2008 21:36:18 GMT]]></title><description><![CDATA[<p>Nanyuki schrieb:</p>
<blockquote>
<p>Ist der Codeabschnitt aus einer Übung à la &quot;finden Sie 10 Gründe, warum folgender Code nicht gut ist?&quot;.</p>
</blockquote>
<p>Ein ähnlicher Gedanke kam mir auch. Verständlich wird die Anwesenheit dieses Stück Codes wenn man weiß, dass vom gleichem Autor auch ein '<a href="http://www.amazon.de/Beginning-C-Novice-Professional/dp/1590597354/ref=sr_1_3?ie=UTF8&amp;s=books-intl-de&amp;qid=1228253208&amp;sr=1-3" rel="nofollow">Beginning C: From Novice to Professional (Beginning: from Novice to Professional)</a>' existiert. Und für jede neue Version des VC-Studios schreibt er ein neues Buch <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>Für ein C++-Buch fände ich es angebrachter wenn man an dieser Stelle etwa ..</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;  // remove
#include &lt;iostream&gt;
#include &lt;ostream&gt;
#include &lt;string&gt;

int main()
{
    using namespace std;
    string str = &quot;Text mit Space  &quot;;
    str.erase( remove( str.begin(), str.end(), ' ' ), str.end() ); // == eat spaces
    cout &lt;&lt; &quot;[&quot; &lt;&lt; str &lt;&lt; &quot;]&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>.. vorfinden würde.<br />
Zusammen mit einer schönen Erklärung warum das funktioniert.</p>
<p>:xmas2: Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624621</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 02 Dec 2008 21:36:18 GMT</pubDate></item></channel></rss>