<?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[komische fehler !(1) = 1]]></title><description><![CDATA[<p>Hallo,<br />
ich habe in einem Programm inetwa soetwas:</p>
<pre><code class="language-cpp">while(!(a&lt;b))
{
cout &lt;&lt; (a&lt;b) &lt;&lt; &quot;\n&quot;;
cout &lt;&lt; (!(a&lt;b)) &lt;&lt; &quot;\n&quot;;

//Viel Zeugs
}
</code></pre>
<p>Nun bricht die Schleife allerdings nicht ab, wenn sie soll, und ich bekomme manchmal Ausgaben wie:<br />
1<br />
1<br />
was ja eigentlich nicht passieren sollte.<br />
Woran könnte dieser komische Fehler liegen?</p>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189340/komische-fehler-1-1</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 09:46:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189340.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Aug 2007 16:00:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sat, 11 Aug 2007 16:00:41 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe in einem Programm inetwa soetwas:</p>
<pre><code class="language-cpp">while(!(a&lt;b))
{
cout &lt;&lt; (a&lt;b) &lt;&lt; &quot;\n&quot;;
cout &lt;&lt; (!(a&lt;b)) &lt;&lt; &quot;\n&quot;;

//Viel Zeugs
}
</code></pre>
<p>Nun bricht die Schleife allerdings nicht ab, wenn sie soll, und ich bekomme manchmal Ausgaben wie:<br />
1<br />
1<br />
was ja eigentlich nicht passieren sollte.<br />
Woran könnte dieser komische Fehler liegen?</p>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342778</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:00:41 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sat, 11 Aug 2007 16:03:20 GMT]]></title><description><![CDATA[<p>das beides 1 ist, ist in der tat komisch ... 0 0 wäre klar <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/1342781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342781</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sat, 11 Aug 2007 16:20:52 GMT]]></title><description><![CDATA[<p>eigtl. müsste<br />
0<br />
1 (zumindest nicht 0^^)<br />
ausgegeben werden ...<br />
werden a oder b manipuliert zwischen while und dem cout oder evtl. in anderen Threads?</p>
<p>@ Devil: WIeso wäre 0 0 klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342797</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sat, 11 Aug 2007 16:28:00 GMT]]></title><description><![CDATA[<p>Weil a &lt; b und b &lt; a &lt;=&gt; a = b. Deshalb reicht es ja auch, einen &lt;-Operator zu definieren.</p>
<p>Zum Problem: Sicher, dass du es mit &quot;guten&quot; Operatoren zu tun hast? Welche Werte haben a und b?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342805</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sat, 11 Aug 2007 16:46:46 GMT]]></title><description><![CDATA[<p>Was ist denn mit &quot;guten&quot; Operatoren gemeint? - Hab das noch nie gehört.<br />
Werte sind:<br />
a = +0<br />
b = +0.001<br />
und dann gibt es:<br />
1<br />
1<br />
und das kann ja eigentlich nicht sein.</p>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342819</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Sat, 11 Aug 2007 16:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 01:52:19 GMT]]></title><description><![CDATA[<p>also wenn du es mit double bzw. float zu tun hast, sollte das Programm garnicht erst in die Schleife eintreten (da a&lt;b und die Schleifenbedingung schon zu Anfang nicht erfüllt ist) hast du eventuell vor oder nach der Schleife noch Ausgaben, die das verursachen könnten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343025</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 12 Aug 2007 01:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 06:42:50 GMT]]></title><description><![CDATA[<p>a und b sind vom Typ rol (siehe Signatur)<br />
Die Variablen werden so initialisiert, dass in die Schleife eingetreten wird.<br />
übrigens habe ich jetzt auch folgendes versucht:</p>
<pre><code class="language-cpp">bool x = true;
while(x)
{
    cout &lt;&lt; x &lt;&lt; &quot;\n&quot;;
    //Viel Code
    if(a&lt;b)
    {
         x = false;
    }
}
</code></pre>
<p>So dürfte ich eigentlich nie die Ausgabe 0 bekommen, aber ich bekomme sie.<br />
Irgendwie ist das alles sehr seltsam....</p>
<p>Vielen Dank schonml im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343036</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Sun, 12 Aug 2007 06:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 09:35:24 GMT]]></title><description><![CDATA[<p>Dann mach mal folgendes: gib erstens in der Schleife mal a und b direkt aus, wenn das geht. Und dann schreib einfach mal ein kleines Testprogramm mit</p>
<pre><code class="language-cpp">int main()
{
  rol a = 0.0;
  rol b = 0.0001;
  cout &lt;&lt; a &lt;&lt; ' ' &lt;&lt; b &lt;&lt; ' ' &lt;&lt; (a&lt;b) &lt;&lt; endl;
}
</code></pre>
<p>Eventuell steckt ja der Wurm irgendwo im operator&lt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343070</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 12 Aug 2007 09:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 10:46:57 GMT]]></title><description><![CDATA[<p>Also:<br />
bevor der ganze Rest anfängt, habe ich zwei Variablen genommen, ihnen genau die selben Werte gegeben und genau gleich ausgegeben:<br />
+0&gt;+0.001 : 0<br />
heißt es da.<br />
Nun habe ich irgendwo danach eine Schleife:</p>
<pre><code class="language-cpp">while(a&gt;b)
{
   cout &lt;&lt; a &lt;&lt; &quot;&gt;&quot; &lt;&lt; b &lt;&lt; &quot; : &quot; &lt;&lt; (a&gt;b) &lt;&lt; &quot;\n&quot;;

   //Viel Code
}
</code></pre>
<p>Hier wird jetzt auch<br />
+0&gt;+0.001 : 0<br />
ausgeben, aber das dürfte doch eigentlich nicht ausgegeben werden, da die Schleife ja dann abbrechen müsste.<br />
Kann es vielleicht ein Fehler in GCC sein?</p>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343102</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Sun, 12 Aug 2007 10:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 11:06:27 GMT]]></title><description><![CDATA[<p>welche Datentypen haben eigtl. a und b?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343104</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Sun, 12 Aug 2007 11:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 11:21:41 GMT]]></title><description><![CDATA[<p>etlam schrieb:</p>
<blockquote>
<p>a und b sind vom Typ rol (siehe Signatur)</p>
</blockquote>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343109</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sun, 12 Aug 2007 11:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 12:10:13 GMT]]></title><description><![CDATA[<p>Gib doch mal mehrfach das Ergebnis von a &gt; b aus, also 10mal a &gt; b aufrufen und Ergebnis ausgeben. Kann gut sein, dass da nicht immer das selbe raus kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343135</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sun, 12 Aug 2007 12:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Sun, 12 Aug 2007 15:25:20 GMT]]></title><description><![CDATA[<p>Mit guten Operatoren meinte ich solche, die sich eben verhalten wie arithmetische Operatoren. Wie sind die denn bei deinem rol-Typ implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343202</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 12 Aug 2007 15:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Mon, 13 Aug 2007 08:22:18 GMT]]></title><description><![CDATA[<p>Jetzt habe ich nichts geändert und das ganze auf mit einer anderen Live-Cd probiert - da ging es auf einmal - und das komischste ist, dass es dort wo es vorher nicht ging jetzt auf einmal auch geht!</p>
<p>etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343521</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Mon, 13 Aug 2007 08:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Mon, 13 Aug 2007 14:31:55 GMT]]></title><description><![CDATA[<p>etlam schrieb:</p>
<blockquote>
<p>Jetzt habe ich nichts geändert und das ganze auf mit einer anderen Live-Cd probiert - da ging es auf einmal - und das komischste ist, dass es dort wo es vorher nicht ging jetzt auf einmal auch geht!</p>
<p>etlam</p>
</blockquote>
<p>Hört sich für mich so an, als wäre da eine temporäre Datei benutzt worden die nicht mehr auf dem aktuellsten Stand war.<br />
Falls du mal wieder sowas hast, dann lösch alle temporäre Dateien und mach ein komplettes Rebuild.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343751</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Mon, 13 Aug 2007 14:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Mon, 13 Aug 2007 14:52:24 GMT]]></title><description><![CDATA[<p>Alsomein Programm selber benutzt keine Temporänen Dateien, und ich benutzKnoppix, und auch wenn ich nach dem starten direkt es versucht hatte, ging es nicht.<br />
Jetzt geht es, aber nur wenn ich am ende der schleife soetwas mache:</p>
<pre><code class="language-cpp">if(a&gt;b)
{
;
}
</code></pre>
<p>Komisch, oder?</p>
<p>etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343761</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Mon, 13 Aug 2007 14:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Mon, 13 Aug 2007 14:55:34 GMT]]></title><description><![CDATA[<p>Es handelt sich bei rol doch um einen von Dir selbst geschriebenen Datentyp, oder? Hast Du schonmal daran gedacht, dass Dein operator&lt; einfach kaputt sein könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343767</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Aug 2007 14:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Mon, 13 Aug 2007 15:18:27 GMT]]></title><description><![CDATA[<p>Ich meinte die temporären Dateien die dein Kompiler erstellt, die erstellt er damit er nicht jedes mal das gesamte Projekt neu übersetzen muss.</p>
<p>Zeig mal den Code für deinen op&gt; (also für die aktuelle Version mit der dieses Problem auftritt).</p>
<p>Und hast du mal folgendes versucht:</p>
<pre><code class="language-cpp">for( int i = 0; i &lt; 20; ++i )
  cout &lt;&lt; ( a &gt; b ) &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Würde mich mal interressieren ob da immer das gleiche herauskommt, falls nicht ist dein op&gt; auf jeden Fall fehlerhaft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343787</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Mon, 13 Aug 2007 15:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Tue, 14 Aug 2007 12:04:19 GMT]]></title><description><![CDATA[<p>Also wegen temporänen Dateien: Ich benutz z.Z. Knoppix, da ist nix mit temporänen Dateien, wenn ich neu starte, da Knoppix ja eine Live-Cd Distribution ist.<br />
Der Operator &gt; funktioniert.<br />
Ich habe mir das ganze auch oft ausgeben lassen, wie vorgeschlagen, und es kommt immer das richtige Ergebnis raus, nur im while() und if() wird die Rückgabe falsch interpretiert oder umgewandelt oder so.</p>
<p>etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344249</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Tue, 14 Aug 2007 12:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Tue, 14 Aug 2007 12:56:23 GMT]]></title><description><![CDATA[<p>etlam schrieb:</p>
<blockquote>
<p>Also:<br />
bevor der ganze Rest anfängt, habe ich zwei Variablen genommen, ihnen genau die selben Werte gegeben und genau gleich ausgegeben:<br />
+0&gt;+0.001 : 0<br />
heißt es da.</p>
</blockquote>
<p>Wenn du ihnen genau die selben Werte gegeben hast, ist doch arg verwunderlich, dass da einmal &quot;0&quot; und einmal &quot;0.001&quot; steht.<br />
Vielleicht postest du mal kurz die relevanten Teile deiner Klassendefinition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344307</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 14 Aug 2007 12:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Tue, 14 Aug 2007 13:10:49 GMT]]></title><description><![CDATA[<p>Kann natürlich auch sein, dass du dir irgendwo den Stack oder den Heap zerschossen hast. Es sollte mich jedenfalls arg wundern wenn da der GCC einen Fehler gemacht hätte. Übersetz das Programm mal mit verschiedenen Optionen (-O0 -O1 -O2 -O3 -Os -g -p) wenn sich das Programm verschieden verhält dann ist das dein Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344326</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Tue, 14 Aug 2007 13:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Tue, 14 Aug 2007 16:15:53 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>etlam schrieb:</p>
<blockquote>
<p>Also:<br />
bevor der ganze Rest anfängt, habe ich zwei Variablen genommen, ihnen genau die selben Werte gegeben und genau gleich ausgegeben:<br />
+0&gt;+0.001 : 0<br />
heißt es da.</p>
</blockquote>
<p>Wenn du ihnen genau die selben Werte gegeben hast, ist doch arg verwunderlich, dass da einmal &quot;0&quot; und einmal &quot;0.001&quot; steht.<br />
Vielleicht postest du mal kurz die relevanten Teile deiner Klassendefinition.</p>
</blockquote>
<p>Also mit dieselben Werte meine ich natürlich die selben Werte, wie sie hinterher in der Schleife vorkommen!</p>
<p>Das mit den verschiedenen Optionen werde ich morgen ausprobieren, Vielen Dank für den Hinweis.</p>
<p>etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344456</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Tue, 14 Aug 2007 16:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Tue, 14 Aug 2007 18:22:20 GMT]]></title><description><![CDATA[<p>Sag mal, schämst du dich für deinen Code? Nun zeig' ihn doch endlich her!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344524</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 14 Aug 2007 18:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Wed, 15 Aug 2007 11:57:14 GMT]]></title><description><![CDATA[<p>Das ist der Code für den Operator &gt;:</p>
<pre><code class="language-cpp">bool&amp; operator&gt;(rol&amp; a, rol&amp; b)
{
	bool aistbruch=0;
	bool bistbruch=0;
	int awo = 0;
	int bwo = 0;
	int asize = a.wert.size();
	int bsize = b.wert.size();
	while(awo != asize)
	{
		if(a.wert[awo]=='|')
		{
			aistbruch=1;
		}
		awo++;
	}
	while(bwo != bsize)
	{
		if(b.wert[bwo]=='|')
		{
			bistbruch=1;
		}
		bwo++;
	}
	static bool reuckgabe;
	if((aistbruch==1)||(bistbruch==1))
	{
		if(aistbruch==0)
		{
			a.wert = bbeideszubruch(a.wert);
		}
		if(bistbruch==0)
		{
			b.wert = bbeideszubruch(b.wert);
		}
		a.wert = vmachevorzeichen(a.wert);
		b.wert = vmachevorzeichen(b.wert);
		reuckgabe = vbistgroesser(a.wert,b.wert);
	}
	else
	{
		a.wert = vmachevorzeichen(a.wert);
		b.wert = vmachevorzeichen(b.wert);
		reuckgabe = vistgroesser(a.wert,b.wert);
	}
	return(reuckgabe);
}
</code></pre>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344952</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Wed, 15 Aug 2007 11:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Thu, 16 Aug 2007 08:42:15 GMT]]></title><description><![CDATA[<p>Au Backe. Du machst Zuweisungen an a.wert und b.wert. Da aber a und b <strong>Referenzen</strong> auf zwei rols sind, veraenderst du im Endeffekt die beiden Parameter, die du uebergibst. Egal wie klein der Effekt sein mag, operator&lt; mit Seiteneffekten auf die Operanden ist alles andere als das, was man erwarten darf. Des weiteren kann dein operator&lt; nicht fuer const rol aufgerufen werden. Du solltest da evtl. noch einiges am Design veraendern.</p>
<p>Ausserdem:<br />
- wenn du bools benutzt, solltest du auch true und false benutzen an Stelle von 0 und 1; Liest sich leichter.<br />
- deine while Schleife laeuft weiter, auch wenn bereits ein '|' gefunden wurde. Pack da doch entweder ein break in die Schleife oder ein &quot;&amp;&amp; !aistbruch&quot; zur Bedingung dazu. Kann enorm Zeit sparen, wenn dein rol.wert so elend lang sein kann wie deine Signatur vermuten laesst.<br />
- der vergleich von einem bool mit 1 ist doppelt gemoppelt. Es reicht ein</p>
<pre><code class="language-cpp">if (aistbruch || bistbruch)
</code></pre>
<p>- deine variable rueckgabe ist unnoetigerweise static. Sie wird angelegt und bleibt bestehen, auch wenn weit und breit kein operator&lt; zu sehen ist. Und da du keine Informationen von einem Aufruf zum naechsten transportieren willst, macht static hier keinen Sinn.<br />
- auch nonstatic waere rueckgabe einen unnoetige variable. statt der zuweisung und dem anschliessenden return kannst du auch jeweils einfach folgendes schreiben:</p>
<pre><code class="language-cpp">return vbistgroesser(a.wert,b.wert);
</code></pre>
<p>Wenn du uns jetzt noch ein paar Details z.B. ueber die Art der Speicherung deiner Werte in den rols erzaehlst udn uns evtl auch noch die Implementierung von &quot;bbeideszubruch&quot; etc. zeigst, kann man dir vielleicht sogar helfen, indem wir dir einen kuerzeren operator&lt; ohne Seiteneffekte erstellen helfen. <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/1344974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344974</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 16 Aug 2007 08:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to komische fehler !(1) = 1 on Thu, 16 Aug 2007 07:28:50 GMT]]></title><description><![CDATA[<p>O.K.<br />
Also:<br />
Es gibt ja die Klasse rol, in der sind die Operatoren als &quot;friends&quot; deklariert.<br />
darin gibt es einen vector &lt;char&gt; wert , in dem die Zahl gespeichert ist.<br />
vector&lt;char&gt; bbeideszubruch(vector &lt;char&gt; x)<br />
gibt die selbe Zahl zurück, aber als Bruch - eigentlich ganz simpel, ist auch gut getestet, das sollte eigentlich machen was es soll.<br />
vmachevorzeichen sieht vom Aufbau her fast genauso aus, macht eben ein Vorzeichen vor die Zahl, falls diese noch keines hat.</p>
<p>Das mit dem, dass die Operanden verändert werden ist durchaus gewünscht.<br />
Denn angenommen man hat eine irre lange Zahl (die sich selten ändert), die man in einer Schleife ganz oft mit verschiedenen anderen Zahlen vergleicht, addiert, wwas auch immer.</p>
<p>Dann müsste man (würde man diesen Operanden nicht dort ändern), diese Zahl jedes Mal umwandeln (Und z.B. das Bruch kürzen dauert ganz schön lange!).<br />
Da ist es insgesamt also schneller diese Zahl einmal umzuwandeln und danach nicht mehr.</p>
<p>Das mit dem nicht abbrechen bei | ist ja ein dummer Fehler von mir... <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="🙄"
    />, vielen Dank für den Hinweis.</p>
<p>Vielen Dank schonmal im voraus,<br />
etlam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345509</guid><dc:creator><![CDATA[etlam]]></dc:creator><pubDate>Thu, 16 Aug 2007 07:28:50 GMT</pubDate></item></channel></rss>