<?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[Code Bitte Erklären!]]></title><description><![CDATA[<p>Hallo,</p>
<p>es wäre nett wenn ihr mir eben das hier erklären könntet:</p>
<pre><code class="language-cpp">void IClientPacketHandler::Decrypt(char *&amp;szData)
{
	for(unsigned int i = 0; i &lt; strlen(szData); i++)
	{
		szData[i] = (char)((char)szData[i] ^ (char)0xC3);
	}
}
</code></pre>
<p>Das da was Decrypted also leserlich gemacht wird weiss ich nur bitte die einzelnen abschnitte genau erklären, es wäre sehr nett.</p>
<p>Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290682/code-bitte-erklären</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 07:15:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290682.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Aug 2011 10:30:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:30:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es wäre nett wenn ihr mir eben das hier erklären könntet:</p>
<pre><code class="language-cpp">void IClientPacketHandler::Decrypt(char *&amp;szData)
{
	for(unsigned int i = 0; i &lt; strlen(szData); i++)
	{
		szData[i] = (char)((char)szData[i] ^ (char)0xC3);
	}
}
</code></pre>
<p>Das da was Decrypted also leserlich gemacht wird weiss ich nur bitte die einzelnen abschnitte genau erklären, es wäre sehr nett.</p>
<p>Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100326</guid><dc:creator><![CDATA[Gast123456789]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:32:49 GMT]]></title><description><![CDATA[<p>Hmm Interessant den Code habe ich auch und mich Interessiert auch was der Bedeuten soll <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=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100328</guid><dc:creator><![CDATA[CsRouLiL357]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:33:10 GMT]]></title><description><![CDATA[<p>Jedes Zeichen des Strings wird mit 0xC3 <a href="http://de.wikipedia.org/wiki/Bitweiser_Operator#XOR" rel="nofollow">xor</a>-verknüpft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100329</guid><dc:creator><![CDATA[fdfdg]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:35:44 GMT]]></title><description><![CDATA[<p>fdfdg schrieb:</p>
<blockquote>
<p>Jedes Zeichen des Strings wird mit 0xC3 <a href="http://de.wikipedia.org/wiki/Bitweiser_Operator#XOR" rel="nofollow">xor</a>-verknüpft.</p>
</blockquote>
<p>hmmm ich werde mir das mal anschauen.<br />
Könntest du eventuell den rest auch noch erklären?</p>
<p>Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100332</guid><dc:creator><![CDATA[Gast123456789]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:44:33 GMT]]></title><description><![CDATA[<p>Gast123456789 schrieb:</p>
<blockquote>
<p>Könntest du eventuell den rest auch noch erklären?</p>
</blockquote>
<p>Da ist kein Rest, das ist alles was passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100336</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:50:29 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Gast123456789 schrieb:</p>
<blockquote>
<p>Könntest du eventuell den rest auch noch erklären?</p>
</blockquote>
<p>Da ist kein Rest, das ist alles was passiert.</p>
</blockquote>
<p>Gut, dachte da wäre mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
<p>Danke euch beiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100339</guid><dc:creator><![CDATA[Gast123456789]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 10:52:41 GMT]]></title><description><![CDATA[<p>Wie der Name der Funtkion vermuten lässt, wird hier ein Datenpacket entschlüsselt, das vorher vermutlich übertragen wurde. Allerdings ist eine XOR-Verschlüsslung binnen Sekunden geknackt. Deshalb frage ich mich, wer benutzt sowas und wo hast du das her?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100340</guid><dc:creator><![CDATA[*-BootLag-*]]></dc:creator><pubDate>Mon, 01 Aug 2011 10:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 11:12:00 GMT]]></title><description><![CDATA[<p>Selbst wenn man von der Sinnlosigkeit der Verschlüsselung absieht, kommen für so ein kurzes Codestück erstaunlich viele Fragwürdigkeiten vor.</p>
<pre><code class="language-cpp">void IClientPacketHandler::Decrypt(char *&amp;szData)
</code></pre>
<p>Warum hier eine Referenz genommen wird, weiss niemand. Der Zeiger selbst wird jedenfalls nicht geändert. Und was soll dieses <code>sz</code> -Präfix?</p>
<pre><code class="language-cpp">szData[i] = (char)((char)szData[i] ^ (char)0xC3);
</code></pre>
<p>Etwas viele Casts, oder? Zumal sie alle unnötig sind. Man könnte ausserdem gleich <code>operator^=</code> verwenden.</p>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; strlen(szData); i++)
</code></pre>
<p>So zu iterieren führt zu quadratischer Laufzeit. Iteriere lieber gleich mit Zeigern und prüfe auf die Nullterminierung.</p>
<p>Das könnte dann so aussehen:</p>
<pre><code class="language-cpp">void IClientPacketHandler::Decrypt(char* dataPtr)
{
    for (; *dataPtr != '\0'; ++dataPtr)
        *dataPtr ^= 0xC3;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2100349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100349</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Aug 2011 11:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 12:00:24 GMT]]></title><description><![CDATA[<p>Warum ist denn</p>
<pre><code class="language-cpp">for (; *dataPtr != '\0'; ++dataPtr)
</code></pre>
<p>schneller als</p>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; strlen(szData); i++)
</code></pre>
<p>?<br />
Weil jedesmal die Stringlänge berechnet wird? Wäre dann nicht</p>
<pre><code class="language-cpp">int len = strlen(szData);
for(unsigned int i = 0; i &lt; len; ++i)
</code></pre>
<p>die schnellste Variante?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100372</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Mon, 01 Aug 2011 12:00:24 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 12:25:38 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; strlen(szData); i++)
</code></pre>
<p>So zu iterieren führt zu quadratischer Laufzeit. Iteriere lieber gleich mit Zeigern und prüfe auf die Nullterminierung.</p>
</blockquote>
<p>Wie bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100382</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Mon, 01 Aug 2011 12:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 12:35:20 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; strlen(szData); i++)
</code></pre>
<p>So zu iterieren führt zu quadratischer Laufzeit. Iteriere lieber gleich mit Zeigern und prüfe auf die Nullterminierung.</p>
</blockquote>
<p>Wie bitte?</p>
</blockquote>
<p>Was macht StrLen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100388</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Mon, 01 Aug 2011 12:35:20 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 12:57:43 GMT]]></title><description><![CDATA[<p>StellerFragen schrieb:</p>
<blockquote>
<p>Weil jedesmal die Stringlänge berechnet wird? Wäre dann nicht</p>
<pre><code class="language-cpp">int len = strlen(szData);
for(unsigned int i = 0; i &lt; len; ++i)
</code></pre>
<p>die schnellste Variante?</p>
</blockquote>
<p>Wozu erst einmal über den ganzen String iterieren um die Zeichen zu zählen und dann nochmal ums sie zu ver-xor-en, wenn man auch gleich nur einmal über alle Zeichen iterieren kann, sie dabei ver-xor-dern kann und beim letzten Zeichen aufhören kann?</p>
<p>Das würde ungefähr doppelt so lange dauern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100396</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 01 Aug 2011 12:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 13:13:59 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(unsigned int i = 0; i &lt; strlen(szData); i++)
</code></pre>
<p>So zu iterieren führt zu quadratischer Laufzeit. Iteriere lieber gleich mit Zeigern und prüfe auf die Nullterminierung.</p>
</blockquote>
<p>Wie bitte?</p>
</blockquote>
<p>Was macht StrLen ?</p>
</blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100407</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Mon, 01 Aug 2011 13:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 13:29:33 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
</blockquote>
<p>Zumindest könnten sie es, bei Funktionen aus der Std-Lib ist ja klar, welche pure sind und welche nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100413</guid><dc:creator><![CDATA[fdfdg]]></dc:creator><pubDate>Mon, 01 Aug 2011 13:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 13:38:20 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
</blockquote>
<p>Warum die Nicht-Optimierung riskieren statt gleich richtig zu programmieren? Ist ja nicht so, dass letzteres hier besonders anspruchsvoll wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100422</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Aug 2011 13:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 13:46:47 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
</blockquote>
<p>Warum die Nicht-Optimierung riskieren statt gleich richtig zu programmieren? Ist ja nicht so, dass letzteres hier besonders anspruchsvoll wäre.</p>
</blockquote>
<p>Weil man dann Gefaehr laeuft unnoetigerweise unleserlichen/frickeligen Code zu schreiben.<br />
Ist genauso wie mit den Leuten die Rueckgabeparameter per non-const Referenz uebergeben, weil sie meinen das sei viel Effizienter als mit by value return. Ergibt haesslicheren Code, obwohl jeder Compiler dank (N)RVO den schoeneren Code optimiert haette.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100428</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Mon, 01 Aug 2011 13:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 14:06:57 GMT]]></title><description><![CDATA[<p>Der übliche Kompromiss, in dem drin steht, was gemeint ist (strlen) und nicht irgendwelche Funktionen bei jedem Schleifendurchlauf erneut aufgerufen werden:</p>
<pre><code class="language-cpp">for(unsigned int i = 0, imax = strlen(szData); i &lt; imax; ++i)
</code></pre>
<p>Funktioniert hier genauso wie bei den leidigen end()-Abfragen, wenn man durch Container iteriert und den end()-Iterator nicht invalidiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100439</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 01 Aug 2011 14:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 14:21:05 GMT]]></title><description><![CDATA[<p>fdfdg schrieb:</p>
<blockquote>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
</blockquote>
<p>Zumindest könnten sie es, bei Funktionen aus der Std-Lib ist ja klar, welche pure sind und welche nicht.</p>
</blockquote>
<p>Selbst der beste Compiler kann nicht wissen (ohne dass man es ihm auf irgendweine andere Weise mitteilt), dass die Sequenz kein 0xC3 enthält und folglich das Ergebnis von strlen nicht beeinflusst wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100452</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 01 Aug 2011 14:21:05 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 14:23:15 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Weil man dann Gefaehr laeuft unnoetigerweise unleserlichen/frickeligen Code zu schreiben.</p>
</blockquote>
<p>Ich halte</p>
<pre><code class="language-cpp">for (; *dataPtr != '\0'; ++dataPtr)
    *dataPtr ^= 0xC3;
</code></pre>
<p>nicht für unleserlich. Mit etwas C- oder C++-Erfahrung versteht man sofort, was gemeint ist, und zwar um einiges besser als bei der Originalversion. Ich habe extra nicht</p>
<pre><code class="language-cpp">while (*dataPtr)
    *dataPtr++ ^= 0xC3;
</code></pre>
<p>geschrieben.</p>
<p>Du kannst auch gerne</p>
<pre><code class="language-cpp">for (unsigned int i = 0; data[i] != '\0'; ++i)
</code></pre>
<p>verwenden, falls der Code so klarer ist. Finde ich besser als sich blind auf Optimierungen zu verlassen, zumal man dann tendiert, das auch bei komplexeren Situationen so handzuhaben, wo eine Optimierung nicht mehr möglich ist. Und selbst wenn der Compiler dein <code>strlen()</code> aus der Schleife ziehen könnte, würdest du die Anzahl Zeichen unnötigerweise doppelt zählen. Sehe ich in diesem Fall nicht als Premature Optimization an, weil die effiziente Lösung nicht wirklich schwieriger zu programmieren ist.</p>
<p>Aber in solchen Situationen habe ich meist <code>std::string</code> , <code>first/last</code> -Iteratoren oder besonders bei binären Daten ein <code>first/size</code> -Paar, in allen Fällen stellt sich die Problematik nicht.</p>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Ist genauso wie mit den Leuten die Rueckgabeparameter per non-const Referenz uebergeben, weil sie meinen das sei viel Effizienter als mit by value return. Ergibt haesslicheren Code, obwohl jeder Compiler dank (N)RVO den schoeneren Code optimiert haette.</p>
</blockquote>
<p>In den Fällen, wo (N)RVO anwendbar ist, handelt es sich um lokale Objekte, wodurch eine Referenz als Rückgabetyp sowieso nie in Frage kommt.</p>
<p>Aber ich weiss schon, worauf du hinauswillst <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/2100453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100453</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Aug 2011 14:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 14:48:03 GMT]]></title><description><![CDATA[<p><a href="http://warrock.googlecode.com/svn/trunk/LoginServer/LoginServer/ClientPacketHandler.cpp" rel="nofollow">http://warrock.googlecode.com/svn/trunk/LoginServer/LoginServer/ClientPacketHandler.cpp</a></p>
<p>Daher habe ich das.</p>
<p>Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100475</guid><dc:creator><![CDATA[Gast123456789]]></dc:creator><pubDate>Mon, 01 Aug 2011 14:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 15:26:37 GMT]]></title><description><![CDATA[<p>Gast123456789 schrieb:</p>
<blockquote>
<p><a href="http://warrock.googlecode.com/svn/trunk/LoginServer/LoginServer/ClientPacketHandler.cpp" rel="nofollow">http://warrock.googlecode.com/svn/trunk/LoginServer/LoginServer/ClientPacketHandler.cpp</a></p>
<p>Daher habe ich das.</p>
<p>Lg</p>
</blockquote>
<p>Das ist ein lupenreines Negativbeispiel für die Vermischung von C++ und C.<br />
C-Gefrickel in Situationen, in denen C++ Code höchstwarscheinlich performanter und in jedem Fall sicherer und einfacher ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100487</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 01 Aug 2011 15:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Code Bitte Erklären! on Mon, 01 Aug 2011 16:18:58 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>fdfdg schrieb:</p>
<blockquote>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Gute Compiler werden doch den Funktionsaufruf aus der Schleife rausziehen?</p>
</blockquote>
<p>Zumindest könnten sie es, bei Funktionen aus der Std-Lib ist ja klar, welche pure sind und welche nicht.</p>
</blockquote>
<p>Selbst der beste Compiler kann nicht wissen (ohne dass man es ihm auf irgendweine andere Weise mitteilt), dass die Sequenz kein 0xC3 enthält und folglich das Ergebnis von strlen nicht beeinflusst wird.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2100498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2100498</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Mon, 01 Aug 2011 16:18:58 GMT</pubDate></item></channel></rss>