<?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[Funktion liefert immer den richtigen Wert ?!]]></title><description><![CDATA[<p>Hi</p>
<p>ich hab das folgende Programm geschrieben. Wenn ich eine Zahl größer als 20 Eingebe dann wird kein Rückgabewert an die Funktion eingabe() geliefert und eigentlich müsste die Ausgabe ja Zufall sein.<br />
Aber egal wie oft ich das Programm starte und eine Zahl größer als 20 eingebe ich bekomme IMMER den richtigen Wert ausgegeben.<br />
Weiß jemand wieso ??</p>
<p>/*********************<br />
Funktion mit Eingabe<br />
*********************/</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int eingabe()<br />
{<br />
int wert = 0;<br />
cout &lt;&lt; &quot;Bitte geben Sie eine Zahl kleiner als 20 ein:&quot;;<br />
cin &gt;&gt; wert;<br />
if (wert &lt; 20)<br />
return wert;<br />
}<br />
int main()<br />
{<br />
cout &lt;&lt; &quot;Die eingegebene Zahl lautet: &quot; &lt;&lt; eingabe() &lt;&lt; '\n';<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300948/funktion-liefert-immer-den-richtigen-wert</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 11:20:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300948.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Mar 2012 16:49:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Wed, 14 Mar 2012 16:49:58 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich hab das folgende Programm geschrieben. Wenn ich eine Zahl größer als 20 Eingebe dann wird kein Rückgabewert an die Funktion eingabe() geliefert und eigentlich müsste die Ausgabe ja Zufall sein.<br />
Aber egal wie oft ich das Programm starte und eine Zahl größer als 20 eingebe ich bekomme IMMER den richtigen Wert ausgegeben.<br />
Weiß jemand wieso ??</p>
<p>/*********************<br />
Funktion mit Eingabe<br />
*********************/</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int eingabe()<br />
{<br />
int wert = 0;<br />
cout &lt;&lt; &quot;Bitte geben Sie eine Zahl kleiner als 20 ein:&quot;;<br />
cin &gt;&gt; wert;<br />
if (wert &lt; 20)<br />
return wert;<br />
}<br />
int main()<br />
{<br />
cout &lt;&lt; &quot;Die eingegebene Zahl lautet: &quot; &lt;&lt; eingabe() &lt;&lt; '\n';<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191673</guid><dc:creator><![CDATA[Rokko78]]></dc:creator><pubDate>Wed, 14 Mar 2012 16:49:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Wed, 14 Mar 2012 17:02:24 GMT]]></title><description><![CDATA[<p>Rokko78 schrieb:</p>
<blockquote>
<p>Aber egal wie oft ich das Programm starte und eine Zahl größer als 20 eingebe ich bekomme IMMER den richtigen Wert ausgegeben.</p>
</blockquote>
<p>Was ist denn deiner Meinung nach der &quot;richtige&quot; Wert? Es wird doch gar kein bestimmter zurückgegeben. Der Compiler macht an der Stelle irgendetwas, was eben &quot;zufällig&quot; das Zurückgeben von <code>wert</code> ist (wenn ich dich richtig verstanden habe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191677</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Wed, 14 Mar 2012 17:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Wed, 14 Mar 2012 17:13:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Bitte geben Sie eine Zahl kleiner als 20 ein:22<br />
Die eingegebene Zahl lautet: 268889048<br />
Press any key to continue . . .</p>
</blockquote>
<p>Tut es doch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191678</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Wed, 14 Mar 2012 17:13:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Wed, 14 Mar 2012 18:00:54 GMT]]></title><description><![CDATA[<p>Moin!<br />
Da ich vor kurzem auch verwundert war, dass sowas möglich ist habe ich mal nachgeschaut.</p>
<p>Das eigentlich ungewöhnliche ist ja, dass Du eingabe() als</p>
<pre><code class="language-cpp">int eingabe();
</code></pre>
<p>deklarierst, aber für den Fall wert&gt;=20 keinen Programmzweig - insbesondere kein return statement - hast.<br />
Du &quot;fällst&quot; gleichermaßen aus dem Funktionskörper...</p>
<p>Schauen wir also nach, was dazu im Standard steht:</p>
<blockquote>
<p>ISO/IEC 14882:2011<br />
6.6.3 The return statement<br />
2. [...]Flowing off the end of a function is equivalent to a return with no value; this results in undefined behavior<br />
in a value-returning function.</p>
</blockquote>
<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/2191693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191693</guid><dc:creator><![CDATA[Sascha Schwarz]]></dc:creator><pubDate>Wed, 14 Mar 2012 18:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 04:50:14 GMT]]></title><description><![CDATA[<p>Morgen !</p>
<p>@Sascha<br />
Ganz genau das ist auch Absicht. Ich möchte das in dem Fall (&lt;20)kein Rückgabewert an die Funktion übergeben wird.Und somit das Ergebnis Zufall ist.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4791">@Zeus</a><br />
Ich benutze KDevelop 3.x unter OpenSuse 11.<br />
Und meiner Meinung nach müsste die Ausgabe so wie bei Dir Zufall sein d.h. da die Funktion als Integer vereinbart wurde irgendwo zwischen +-2,14 e9<br />
Bei mir wird aber IMMER das richtige Ergebnis an die Funktion übergeben!!<br />
Eigenart von KDevelop??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191778</guid><dc:creator><![CDATA[Rokko]]></dc:creator><pubDate>Thu, 15 Mar 2012 04:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 06:26:30 GMT]]></title><description><![CDATA[<p>Zufall und undefiniertes Verhalten ist aber ein grosser Unterschied. Wenn man ketzerisch ist koennte man auch behaupten das dir die Platte um die Ohren fliegt.<br />
Willst du eine pseudozufaelligen Wert, dann generier dir einfach einen mit den Standardmitteln und sorge so dafuer das deine Funktion definiertes Verhalten an den Tag legt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191783</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 15 Mar 2012 06:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 06:44:45 GMT]]></title><description><![CDATA[<p>Ist doch alles schön zufällig was du kriegst: du bekommst zufällig den Wert, der Eingegeben wurde. Andere kriegen zufällig einen anderen Wert. Ist doch hübsch.</p>
<p><a href="http://xkcd.com/221/" rel="nofollow">http://xkcd.com/221/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191786</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 15 Mar 2012 06:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 07:26:47 GMT]]></title><description><![CDATA[<p>Rokko schrieb:</p>
<blockquote>
<p>Morgen !</p>
<p>@Sascha<br />
Ganz genau das ist auch Absicht. Ich möchte das in dem Fall (&lt;20)kein Rückgabewert an die Funktion übergeben wird.Und somit das Ergebnis Zufall ist.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4791">@Zeus</a><br />
Ich benutze KDevelop 3.x unter OpenSuse 11.<br />
Und meiner Meinung nach müsste die Ausgabe so wie bei Dir Zufall sein d.h. da die Funktion als Integer vereinbart wurde irgendwo zwischen +-2,14 e9<br />
Bei mir wird aber IMMER das richtige Ergebnis an die Funktion übergeben!!<br />
Eigenart von KDevelop??</p>
</blockquote>
<p>KDevelop ist eine IDE. Daran liegt es garantiert nicht. Es ist einfach egal, ob ich den Sourcecode mit KDevelop oder mit emacs oder vi erstelle.</p>
<p>Und undefiniert bedeutet, dass irgendwas raus kommt. Es ist auch keine geeignete Zufallszahl. Es kann sein, dass da immer die eingegebene Zahl zurück geliefert wird, da sie einfach im generierten code als letztes an die Stelle geschrieben wird, wo der Rückgabewert erwartet wird. Es kann auch sein, dass das Verhalten bei einem optimierten Build anders ist, als ohne Optimierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191790</guid><dc:creator><![CDATA[ich bins]]></dc:creator><pubDate>Thu, 15 Mar 2012 07:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 10:00:48 GMT]]></title><description><![CDATA[<p>In meisten ( nicht allen Systemen ) wird der EAX Register zur Rückgabe der Werten <a href="http://benutzt.In" rel="nofollow">benutzt.In</a> deinem Fall bleibt da, der zuletzt verwendete Wert stehen. Da EAX auch einer der Meist/Zuerst genutzten Register ist, vermute ich mal, dass Du da die Adresse von cout(..) siehst.<br />
Das ist aber stark Compiler/Build/Os abhängig. Seblst zwischen den Release und Debug mit gleichen Spacheinstellungen gibt es große Unterschiede.. Undefiniert halt. <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/2191834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191834</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Thu, 15 Mar 2012 10:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 11:25:59 GMT]]></title><description><![CDATA[<p>Travor schrieb:</p>
<blockquote>
<p>In meisten ( nicht allen Systemen ) wird der EAX Register zur Rückgabe der Werten <a href="http://benutzt.In" rel="nofollow">benutzt.In</a> deinem Fall bleibt da, der zuletzt verwendete Wert stehen. Da EAX auch einer der Meist/Zuerst genutzten Register ist, vermute ich mal, dass Du da die Adresse von cout(..) siehst.<br />
Das ist aber stark Compiler/Build/Os abhängig. Seblst zwischen den Release und Debug mit gleichen Spacheinstellungen gibt es große Unterschiede.. Undefiniert halt. <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>Du meinst die Addresse von cin. <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="😉"
    /><br />
Der &gt;&gt;-Operator von cin klatscht das letzte Mal etwas nach RAX/EAX. Aber das gilt eigentlich auch nur wenn keine Optimierungen aktiv sind, sonst werden die Operationen inlined und RAX/EAX wird überhaupt nicht angetascht. Dann behaupte ich noch dass die Eingabe deswegen in genau diesem Register gespeichert wird, ergo steht da in jedem Fall der eingegebene Wert drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191849</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Thu, 15 Mar 2012 11:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 16:38:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich hab ein neues Programm geschrieben indem der Wert geprüft wird und für den Fall das die Eingabe größer als 20 ist soll der Wert 0 an die Funktion eingabe() geliefert werden.<br />
Dies Funktioniert auch nicht. Die Eingabe wird IMMER ausgegeben.<br />
Jemand eine Idee ??</p>
<p>/********************************<br />
Funktion mit Eingabe und Prüfung<br />
********************************/</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int eingabe()<br />
{<br />
int wert;<br />
bool gelungen;<br />
while (gelungen == false)<br />
{<br />
cout &lt;&lt; &quot;Bitte geben Sie eine Zahl kleiner als 20 ein: &quot;;<br />
cin &gt;&gt; wert;<br />
if (cin.fail())<br />
{<br />
cout &lt;&lt; &quot;\nDie Eingabe war nicht gültig.\n&quot;;<br />
cin.clear();<br />
cin.ignore(BUFSIZ, '\n');<br />
}<br />
else<br />
gelungen = true;<br />
}<br />
if (wert &lt;&lt; 20)<br />
{<br />
cout &lt;&lt; gelungen;<br />
return wert;<br />
}<br />
else<br />
return 0;<br />
}<br />
int main()<br />
{<br />
if (eingabe() == 0)<br />
cout &lt;&lt; &quot;\nDie Zahl war größer als 20.&quot; &lt;&lt; '\n';<br />
else<br />
cout &lt;&lt; &quot;\nDie Zahl lautet: &quot; &lt;&lt; eingabe() &lt;&lt; '\n';<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191919</guid><dc:creator><![CDATA[Rokko]]></dc:creator><pubDate>Thu, 15 Mar 2012 16:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 16:56:04 GMT]]></title><description><![CDATA[<p>Rokko schrieb:</p>
<blockquote>
<p>if (wert &lt;&lt; 20)<br />
{<br />
....<br />
}</p>
</blockquote>
<p>Shift nach links mit 20 Stellen <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="🙂"
    /> <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/2191923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191923</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Thu, 15 Mar 2012 16:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion liefert immer den richtigen Wert ?! on Thu, 15 Mar 2012 17:15:57 GMT]]></title><description><![CDATA[<p>bool gelungen;<br />
while (gelungen == false)</p>
<p>nicht initialisiert. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2191928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191928</guid><dc:creator><![CDATA[augenroller]]></dc:creator><pubDate>Thu, 15 Mar 2012 17:15:57 GMT</pubDate></item></channel></rss>