<?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[Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99]]></title><description><![CDATA[<p>Das hat doch nen Grund?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215027/wieso-schreiben-c-progger-for-int-i-0-i-99-anstatt-i-lt-99</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 19:16:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215027.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jun 2008 15:43:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 15:43:24 GMT]]></title><description><![CDATA[<p>Das hat doch nen Grund?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523460</guid><dc:creator><![CDATA[CppProgger]]></dc:creator><pubDate>Thu, 05 Jun 2008 15:43:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 15:52:26 GMT]]></title><description><![CDATA[<p>Wer schreibt was? Häh?<br />
Progger? Ich kenne Prommer. Die braucht man für Eproms. Aber was sind Progger? Das liest man hier oft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523467</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 05 Jun 2008 15:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 15:56:27 GMT]]></title><description><![CDATA[<p>Weil es keine Rolle spielt, da die Schleife bei inkrementierenden Ganzzahl-Schritten immer gleichzeitig abgebrochen wird, egal ob die Abbruchbedingung &lt; oder != als Vergleichsoperatoren nimmt.</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; 100; i++)   { /* ... */ }
for (int i = 0; i != 100; i++)   { /* ... */ }
</code></pre>
<p>Überleg dir mal, wo der Unterschied liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523469</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 05 Jun 2008 15:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 15:58:21 GMT]]></title><description><![CDATA[<p>So tun als wüsste man nicht was das Wort bedeutet ist sogar kindischer als es eben zu verwenden.<br />
Naja, falls du es wirklich nicht weißt, dann sry <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>Achja, ich würde &quot;i &lt; 99&quot; schreiben.<br />
(Ist '&lt;' nicht auch schneller? Keine Ahnung, mit Bitoperationen habe ich mich noch nicht beschäftigt)<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523472</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Thu, 05 Jun 2008 15:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 16:01:34 GMT]]></title><description><![CDATA[<p>Der Unterschied zwischen (i&lt;99 und i!=99) liegt doch wohl auf der Hand.<br />
i&lt;99:Würde so lange war sein solange i&lt;99 ist!<br />
Und im anderen Fall i!=99 solange i nicht 99 ist dann ist es halt war.<br />
Ergo hast du ne schleife die in einer schritten zählt ist das grob gesagt fast das<br />
selbe... nur wenn du mehr als 2 schritte machst ebend nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523475</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 05 Jun 2008 16:01:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 16:38:11 GMT]]></title><description><![CDATA[<p>warum schreiben manche for(;;) statt while(true)?</p>
<p>is doch scheiss egal...</p>
<p>edit: dämliche smileys <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>edit: den gossenausdruck &quot;progger&quot; kannste aller höchstens in der sektion &quot;webzeugs&quot; bringen, nirgends anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523485</guid><dc:creator><![CDATA[kreater]]></dc:creator><pubDate>Thu, 05 Jun 2008 16:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 16:17:49 GMT]]></title><description><![CDATA[<p>Ist identisch mit der Iterator-Syntax.</p>
<pre><code class="language-cpp">for(container::iterator iter = c.begin(); iter != c.end; ++iter)
for(int i = 0; i != 100; ++i)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1523490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523490</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Thu, 05 Jun 2008 16:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 16:25:10 GMT]]></title><description><![CDATA[<p>Es ist vollkommen egal. Außer du möchtest es in allen Fäälen gleich schreiben:</p>
<pre><code class="language-cpp">for (int i = 0; i != 99; ++i) /* */
for (int i = 200; i != 99; --i) /* */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1523495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523495</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Thu, 05 Jun 2008 16:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 16:41:36 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Ist identisch mit der Iterator-Syntax.</p>
<pre><code class="language-cpp">for(container::iterator iter = c.begin(); iter != c.end; ++iter)
for(int i = 0; i != 100; ++i)
</code></pre>
</blockquote>
<p>Das ist denk ich mal der Hauptgrund. Wenn man viel mit iteratoren arbeitet arbeitet man sehr oft mit != in schleifen. Wenn man das nun auch auf Zählschleifen überträgt erhält man(meiner meinung nach) lesbareren Code, weil er einfacher strukturiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523507</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 05 Jun 2008 16:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 18:31:47 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Wenn man viel mit iteratoren arbeitet arbeitet man sehr oft mit != in schleifen. Wenn man das nun auch auf Zählschleifen überträgt erhält man(meiner meinung nach) lesbareren Code, weil er einfacher strukturiert ist.</p>
</blockquote>
<p>Denke ich auch. Mache ich deswegen genauso, da es einfach zur Konsistenz des Codes beiträgt.</p>
<p>kreater schrieb:</p>
<blockquote>
<p>warum schreiben manche for(;;) statt while(true)?</p>
</blockquote>
<p>Weil das diverse Compiler weniger zu Warnungen veranlasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523597</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 05 Jun 2008 18:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 18:53:12 GMT]]></title><description><![CDATA[<p>Ich glaube im C++ Primer steht das auch irgendwo drin, Iteratoren waren da AFAIR auch die Begründung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523612</guid><dc:creator><![CDATA[Pr0ggerz ftw 1337!!!11]]></dc:creator><pubDate>Thu, 05 Jun 2008 18:53:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 19:02:47 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>kreater schrieb:</p>
<blockquote>
<p>warum schreiben manche for(;;) statt while(true)?</p>
</blockquote>
<p>Weil das diverse Compiler weniger zu Warnungen veranlasst.</p>
</blockquote>
<p>Bzw. weil &quot;for(;;)&quot; einfach viel kuuhler ist <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/1523622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523622</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 05 Jun 2008 19:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 19:04:19 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>groovemaster schrieb:</p>
<blockquote>
<p>kreater schrieb:</p>
<blockquote>
<p>warum schreiben manche for(;;) statt while(true)?</p>
</blockquote>
<p>Weil das diverse Compiler weniger zu Warnungen veranlasst.</p>
</blockquote>
<p>Bzw. weil &quot;for(;;)&quot; einfach viel kuuhler ist <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>
</blockquote>
<p>Weil das die C-Programmierer auch schon so gemacht haben.<br />
Und die hatten schließlich coole Frisuren und flotte Hüte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523626</guid><dc:creator><![CDATA[Kenner der Historie]]></dc:creator><pubDate>Thu, 05 Jun 2008 19:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 19:16:26 GMT]]></title><description><![CDATA[<p>Ich hatte es auch irgendwo gelesen. Zum einen ist ein <code>for(;; )</code> einfach kürzer, zum anderen passt es besser zu <code>forever</code> . <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1523633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523633</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Thu, 05 Jun 2008 19:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 20:04:01 GMT]]></title><description><![CDATA[<p>lagalopex schrieb:</p>
<blockquote>
<p>Ich hatte es auch irgendwo gelesen. Zum einen ist ein <code>for(;; )</code> einfach kürzer, zum anderen passt es besser zu <code>forever</code> . <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>
</blockquote>
<p>Wie meinst du das? So?</p>
<pre><code class="language-cpp">#define forever for(;;)
</code></pre>
<p><code>for(;; )</code> finde ich jetzt aber hässlicher als <code>while(true)</code> - bei der While-Variante sieht man meiner Ansicht nach auch schneller, worum es sich handelt. Aber das ist natürlich Geschmackssache (einmal abgesehen davon, dass solche Endlosschleifen sowieso kaum geschrieben werden). <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/1523658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523658</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 05 Jun 2008 20:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 20:24:36 GMT]]></title><description><![CDATA[<p>Oder gleich</p>
<pre><code class="language-cpp">#define ever (;;)

for ever
{
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523676</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 05 Jun 2008 20:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 20:40:24 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Oder gleich</p>
<pre><code class="language-cpp">#define ever (;;)

for ever
{
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>:p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523687</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 05 Jun 2008 20:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 20:44:16 GMT]]></title><description><![CDATA[<p>CppProgger schrieb:</p>
<blockquote>
<p>Das hat doch nen Grund?</p>
</blockquote>
<p>der grund ist fehlende weitsicht. viele c++ entwickler sind seltsamerweise der meinung, dass code nicht kindersicher sein muss, da man ihn ja selbst geschrieben hat und auch ein blinder mit krückstock sofort durchblickt.</p>
<pre><code class="language-cpp">for( int i = 0; i != 99; ++i )
{
   // paar zeilen code
}
</code></pre>
<p>ist unglaublich fehleranfällig. ein unbedarfter zweiter (oder derselbe entwickler, kommt vor) könnte auf die idee kommen, den code irgendwie zu &quot;verbessern&quot; und folgendes einbauen</p>
<pre><code class="language-cpp">for( int i = 0; i != 99; ++i )
{
   // paar zeilen code
   if( somethingImportant )
     i += 3;
}
</code></pre>
<p>und schon hat man die wunderschönsten fehler im programm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523692</guid><dc:creator><![CDATA[blaaaaa]]></dc:creator><pubDate>Thu, 05 Jun 2008 20:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 21:01:45 GMT]]></title><description><![CDATA[<p>Vielleicht wird != um eine Tausendstel Sekunde schneller ausgewertet als &lt;. Wäre gar nicht so unlogisch. Bei != kann die Funktion beim erstbesten Bit zurückkehren, das nicht übereinstimmt. Bei &lt; ist die Sache nicht so eindeutig, bzw. müssen im Durchschnitt immer ein paar Bits mehr miteinander verglichen werden -&gt; ergo -&gt; dauert deshalb eventuell minimal länger. Ist aber nur eine Theorie. Man würde gar nicht vermuten, in wie vielen Fällen ein Stück Code sich in Punkto Laufzeit von einem anderen Stück Code unterscheidet, das eigentlich genau das gleiche tut, aber eben mithilfe anderer Operatoren.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">int a = f();
if(a &lt; 3)
 a += 3;
else
 a += 6;
</code></pre>
<p>Scheinbar gleichwertig ist z.B.:</p>
<pre><code class="language-cpp">int a = f();
a += a &lt; 3 ? 3 : 6;
</code></pre>
<p>Der Laufzeitunterschied ist zwar minimal, aber die zweite Version ist z.B. bei 200 Mio. Schleifendurchläufen auf meinem Rechner um ca. 1/100 Sekunde schneller (extra getestet).</p>
<p>Es ist gut vorstellbar, dass solche mikroskopischen Laufzeitunterschiede auch zwischen dem &lt; und dem != Operator bestehen (falls der Compiler solche Fälle automatisch erkennen sollte und dementsprechend ohne Zutun des Proggers bei der Übersetzung optimiert ist es wohl einerlei, ob man &lt; oder != schreibt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523704</guid><dc:creator><![CDATA[Theorien-Erfinder]]></dc:creator><pubDate>Thu, 05 Jun 2008 21:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 21:13:42 GMT]]></title><description><![CDATA[<p>Theorien-Erfinder schrieb:</p>
<blockquote>
<p>Bei != kann die Funktion beim erstbesten Bit zurückkehren</p>
</blockquote>
<p>Was für Funktionen denn? Das ganze wird in Maschinencode übersetzt und da macht es zeitlich keinen Unterschied, ob du auf Gleichheit oder Kleinerheit (wie heisst das auf Deutsch?) überprüfst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523711</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Thu, 05 Jun 2008 21:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 21:53:42 GMT]]></title><description><![CDATA[<p>Nanyuki schrieb:</p>
<blockquote>
<p>Theorien-Erfinder schrieb:</p>
<blockquote>
<p>Bei != kann die Funktion beim erstbesten Bit zurückkehren</p>
</blockquote>
<p>Was für Funktionen denn? Das ganze wird in Maschinencode übersetzt und da macht es zeitlich keinen Unterschied, ob du auf Gleichheit oder Kleinerheit (wie heisst das auf Deutsch?) überprüfst.</p>
</blockquote>
<p>So, und ab sofort ist es keine Theorie mehr, sondern eine Tatsache:<br />
!= ist geringfügig schneller als &lt;</p>
<p>Dieses Programm diente zur Überprüfung:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

int main(){
	long dummy = 0;
	LARGE_INTEGER a,b;

	/* Erste Version */
	QueryPerformanceCounter(&amp;a);
	for(int i = 0; i != 200000000; ++i)
		dummy += i &amp; 1 ? 1 : 0;
	QueryPerformanceCounter(&amp;b);
	printf(&quot;Dauer !=: %I64d QueryTakte\n&quot;
		&quot;Es gibt %d ungerade Zahlen\n&quot;,
		b.QuadPart-a.QuadPart,
		dummy);

	/* Zweite Version */
	dummy = 0;

	QueryPerformanceCounter(&amp;a);
	for(int i = 0; i &lt; 200000000; ++i)	/* Einziger Unterschied: &lt; statt != */
		dummy += i &amp; 1 ? 1 : 0;
	QueryPerformanceCounter(&amp;b);
	printf(&quot;Dauer &lt;: %I64d QueryTakte\n&quot;
		&quot;Es gibt %d ungerade Zahlen\n&quot;,
		b.QuadPart-a.QuadPart,
		dummy);

	fgetc(stdin);

	return 0;
}
</code></pre>
<p>Und das war der Output:</p>
<pre><code>Dauer !=: 2358403 QueryTakte
Es gibt 100000000 ungerade Zahlen
Dauer &lt;: 2465883 QueryTakte
Es gibt 100000000 ungerade Zahlen
</code></pre>
<p>Es wurde zuerst die Laufzeit der != Schleife gestoppt,<br />
und danach die Laufzeit einer ansonsten äquivalenten &lt; Schleife.<br />
Der Unterschied beträgt ca. 100.000 Query-Takte, (das entspricht auf meinem Rechner ungefähr eine Vierzigstel-Sekunde).</p>
<p>--&gt; Falls 2.465.883 größer als 2.358.403 sein sollte, so ist auch der != Operator schneller als der &lt; Operator. Genau wie ich vermutet hatte. Solche Schreibweisen-Tricks haben meistens mit Laufzeit-Optimierung zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523733</guid><dc:creator><![CDATA[Theorien-Erfinder]]></dc:creator><pubDate>Thu, 05 Jun 2008 21:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 22:13:30 GMT]]></title><description><![CDATA[<p>So ein Schwachsinn, eine 1/40 Sekunde - das ist doch mit geraumer Wahrscheinlichkeit nur ein Messfehler.<br />
Wiederhole die Messung erstmal auf paar hundert verschiedenen Rechnern mit mehreren tausend Testläufen, bevor du hier irgendwelche wilden Behauptungen in den Raum stellst!</p>
<p>Das hier ist im Übrigen meine Ausgabe:</p>
<pre><code>Dauer !=: 957994 QueryTakte
Es gibt 100000000 ungerade Zahlen
Dauer &lt;: 946040 QueryTakte
Es gibt 100000000 ungerade Zahlen
</code></pre>
<p>--&gt; Falls 957.994 größer als 946.040 sein sollte, so ist deine Theorie ziemlicher Mist. Genau wie ich vermutet hatte. Solche Schreibweisen-Tricks bringen in der Praxis absolut rein gar nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523736</guid><dc:creator><![CDATA[Gegner der Wissenschaft]]></dc:creator><pubDate>Thu, 05 Jun 2008 22:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 22:18:51 GMT]]></title><description><![CDATA[<p>Aber Interessant, bei mir liegt die &lt;-Version fast immer hinten. Vielleicht ist da doch ganz ganz ganz wenig Wahres dran.<br />
Die obige Messung ist übrigens noch gut, meistens liegt die &lt;-Version 15k-25k Takte dahinter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523737</guid><dc:creator><![CDATA[Gegner der Wissenschaft]]></dc:creator><pubDate>Thu, 05 Jun 2008 22:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 22:27:35 GMT]]></title><description><![CDATA[<p>Theorien-Erfinder schrieb:</p>
<blockquote>
<p>Vielleicht wird != um eine Tausendstel Sekunde schneller ausgewertet als &lt;. Wäre gar nicht so unlogisch. Bei != kann die Funktion beim erstbesten Bit zurückkehren, das nicht übereinstimmt. Bei &lt; ist die Sache nicht so eindeutig, bzw. müssen im Durchschnitt immer ein paar Bits mehr miteinander verglichen werden -&gt; ergo -&gt; dauert deshalb eventuell minimal länger. Ist aber nur eine Theorie.</p>
</blockquote>
<p>Nette Theorie, sie ignoriert leider die Funktionsweise von Rechnern <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>
<p>Newsflash: Auch von Compilern. gcc scheint zumindest solche Standardmuster zu erkennen und generiert gleich nur eine jne-Instruktion (jump if not equal).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523739</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 05 Jun 2008 22:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 22:37:38 GMT]]></title><description><![CDATA[<p>Gegner der Wissenschaft schrieb:</p>
<blockquote>
<p>Aber Interessant, bei mir liegt die &lt;-Version fast immer hinten. Vielleicht ist da doch ganz ganz ganz wenig Wahres dran.<br />
Die obige Messung ist übrigens noch gut, meistens liegt die &lt;-Version 15k-25k Takte dahinter.</p>
</blockquote>
<p>Klar müsste man das auf mehreren Rechnern überprüfen. Es könnte auch sein, dass ein und der gleiche Maschinenbefehl auf unterschiedlichen Rechnern jeweils geringfügig anders implementiert ist. Ich wollte nur darauf hinaus, dass unterschiedliche Maschinenbefehle idR unterschiedliche Laufzeiten haben, was meinem zitierten Vorredner vermutlich nicht bewusst war. Das Beispiel ist natürlich völlig unsinnig, aber um diese winzigen Laufzeitunterschiede aufzudecken, muss die Schleife möglichst oft durchlaufen werden.<br />
Es gibt aber durchaus auch sinnvolle Anwendungen, in denen milliardenfach irgendwelche Schleifen durchlaufen werden sollen, dann könnte es interessant werden, sich mit diesen geringfügigen Laufzeitunterschieden zu beschäftigen.<br />
Ich habe absichtlich ein zweites Beispiel im Code untergebracht, das noch deutlicher die unterschiedlichen Laufzeiten von Maschinenbefehlen zeigen könnte.</p>
<p>Man ersetze<br />
i &amp; 1<br />
jeweils durch<br />
i % 2</p>
<p>Oberflächlich betrachtet geschieht das gleiche: Man möchte herausfinden, ob eine Zahl ungerade ist. Es wird auch jeweils nur ein einziger Maschinenbefehl verwendet (BITAND bzw. MODULO). Trotzdem ist die Laufzeit der i % 2 - Variante erheblich länger.<br />
Es gibt noch hunderte solcher Fälle.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523744</guid><dc:creator><![CDATA[TheorienErfinder]]></dc:creator><pubDate>Thu, 05 Jun 2008 22:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso schreiben C++ Progger for(int i=0; i!=99... anstatt i&amp;lt;99 on Thu, 05 Jun 2008 22:40:36 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Theorien-Erfinder schrieb:</p>
<blockquote>
<p>Vielleicht wird != um eine Tausendstel Sekunde schneller ausgewertet als &lt;. Wäre gar nicht so unlogisch. Bei != kann die Funktion beim erstbesten Bit zurückkehren, das nicht übereinstimmt. Bei &lt; ist die Sache nicht so eindeutig, bzw. müssen im Durchschnitt immer ein paar Bits mehr miteinander verglichen werden -&gt; ergo -&gt; dauert deshalb eventuell minimal länger. Ist aber nur eine Theorie.</p>
</blockquote>
<p>Nette Theorie, sie ignoriert leider die Funktionsweise von Rechnern <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>
<p>Newsflash: Auch von Compilern. gcc scheint zumindest solche Standardmuster zu erkennen und generiert gleich nur eine jne-Instruktion (jump if not equal).</p>
</blockquote>
<p>Auch Bashar glaubt, dass sich Maschinenbefehle nicht in der Laufzeit unterscheiden. <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="🙂"
    /> Und ich hab' keine Ahnung von der Funktionsweise eines Rechners. Ein Compiler, der optimiert, ohne dass man es ihm anschafft, ist der größte Feind eines Programmierers.<br />
mfg <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1523746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523746</guid><dc:creator><![CDATA[TheorienErfinder]]></dc:creator><pubDate>Thu, 05 Jun 2008 22:40:36 GMT</pubDate></item></channel></rss>