<?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[Arithmetische Typenumwandlung]]></title><description><![CDATA[<p>Kann mir einer erklären wie das genau geht?<br />
Also z.B. ;<br />
Zahl 1 = 2<br />
Zahl 2 = 1.2;</p>
<p>Zahl 1 = int;<br />
Zahl 2 = double;</p>
<p>Was passiert jetzt mit den beiden Zahlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324854/arithmetische-typenumwandlung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 14:45:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324854.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Apr 2014 15:29:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 15:29:37 GMT]]></title><description><![CDATA[<p>Kann mir einer erklären wie das genau geht?<br />
Also z.B. ;<br />
Zahl 1 = 2<br />
Zahl 2 = 1.2;</p>
<p>Zahl 1 = int;<br />
Zahl 2 = double;</p>
<p>Was passiert jetzt mit den beiden Zahlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392824</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 15:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 15:35:11 GMT]]></title><description><![CDATA[<p>Das nennt sich implizites Casten. Wenn du einen double-Wert einer int-Variable zuweist, dann werden einfach die Nachkommastellen abgeschnitten.</p>
<p>Als Beispiel:</p>
<pre><code>int main()
{
    double d = -7.3;
    int i = 3.2;
    int j = 4.9;
    int k = d;

    std::cout &lt;&lt; i &lt;&lt; std::endl; // Output 3
    std::cout &lt;&lt; j &lt;&lt; std::endl; // Output 4
    std::cout &lt;&lt; k &lt;&lt; std::endl; // Output -7
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2392827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392827</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Fri, 04 Apr 2014 15:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 15:49:18 GMT]]></title><description><![CDATA[<p>Vielen Dank <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/2392830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392830</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 15:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 16:23:46 GMT]]></title><description><![CDATA[<p>Edit: Hat sich erledigt: D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392833</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 16:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 16:35:56 GMT]]></title><description><![CDATA[<p>edit: Jetzt hast du die Frage wegeditiert, auf die ich geantwortet habe. <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>Da musst du aufpassen, da passieren mehrere Dinge gleichzeitig. Grundsaetzliche Regel: Einem Ausdruck ist es erst einmal grundsaetzlich egal, was spaeter mit ihm geschieht. Beispielsweise ist der rechten Seite eines Gleichheitszeichens vollkommen egal, was auf der linken Seite steht. Das heisst, hier wird zuerst <code>i*ui</code> ausgerechnet nach den dafuer vorgesehenen Regeln (siehe unten), dann wird bei Auswertung der Zuweisung das Ergebnis in den passenden Typ fuer die linke Seite umgewandelt. Ob auf der linken Seite vorher ein int, ein unsigned int, ein bool oder ganz was anderes (eigene Klassen koennen schliesslich auch einen Zuweisungsoperator haben) steht, ist bei der ersten Rechnung vollkommen egal.</p>
<p>Wie werden nun gemischte arithmetische Typen miteinander verrechnet? Dazu gilt erst einmal die Regel, dass (fuer die eingebauten Datentypen) ein zweiseitiger Operator (also wie z.B. hier die Multiplikation) auf beiden Seiten den gleichen Typen haben muss. Ist dies nicht der Fall, so werden wieder implizite Umwandlungen vorgenommen, bis auf beiden Seiten der gleiche Typ steht. Dabei gelten grob folgende Regeln:<br />
-Es wird tendenziell zum groesseren (vom Wertebereich her) der beiden Typen hin umgewandelt (Beispiel: Operand 1 ist double, Operand 2 ist long double -&gt; beide werden zu long double konvertiert, dann wird gerechnet, das Ergebnis ist dann auch long double)<br />
-Fliesskommazahlen gelten dabei als ob sie den groesseren Wertebereich haben (d.h. bei float und unsigned long long wird gerechnet, als waere beides float)<br />
-unsigned zaehlt hoeher als signed (Beispiel: Operand 1 ist int, Operand 2 ist unsigned int -&gt; Rechnung und Ergebnis mit unsigned int)<br />
-Bei Typen kleiner als int werden beide als int behandelt (Beispiel: char, short und aehnliche).<br />
Eine genaue Liste steht im Standard am Anfang des Kapitels ueber Ausdruecke unter dem Stichwort &quot;usual arithmetic conversions&quot;.</p>
<p>Hier wird also i * ui im unsigned Zahlenraum ausgerechnet. Das Ergebnis ist ein unsigned int. Dieses wird dann im Rahmen der Zuweisung in einen int umgewandelt.<br />
Letztere Umwandlung ist &quot;implementation-defined&quot;, wenn das Ergebnis nicht in einen int passt, aber bei den ueblichen Implementierungen kommt das heraus, was man erwartet:</p>
<pre><code>#include &lt;iostream&gt;
int main()
{
  unsigned i = 2;
  int j = -2;
  int k = i * j;
  std::cout &lt;&lt;  i*j &lt;&lt; '\n' &lt;&lt; k &lt;&lt; '\n';
}
</code></pre>
<p>Ergibt praktisch ueberall</p>
<pre><code>4294967292
-4
</code></pre>
<p>oder ein vergleichbares Ergebnis. Hier sieht man auch, dass das Zwischenergebnis tatsaechlich unsigned ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392848</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Apr 2014 16:35:56 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 17:02:06 GMT]]></title><description><![CDATA[<p>Auch wenn ich die Frage wieder gelöscht habe (weil ich dachte das niemand antworten wird <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="😃"
    /> ) danke ich dir <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/2392853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392853</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 17:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 17:07:37 GMT]]></title><description><![CDATA[<p>Ich will nicht ständig ein neues Thema eröffnen deshalb frage ich mal in diesem <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>
<p>Muss ich als Anfänger ein Programm schreiben können das eine Sinus Kurve ausgibt? oder muss ich n kleines Spiel schreiben können? (mit nem ball etc.) in meinem Buch stehen nähmlich am Ende jedes Kapitels Aufgaben und die sind verdammt schwer und passen meistens nicht wirklich zum Thema....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392854</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 17:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 17:17:11 GMT]]></title><description><![CDATA[<p>Talon schrieb:</p>
<blockquote>
<p>Muss ich als Anfänger ein Programm schreiben können das eine Sinus Kurve ausgibt? oder muss ich n kleines Spiel schreiben können? (mit nem ball etc.) in meinem Buch stehen nähmlich am Ende jedes Kapitels Aufgaben und die sind verdammt schwer und passen meistens nicht wirklich zum Thema....</p>
</blockquote>
<p>Wenn in deinem Buch ein einfaches Grafiksystem erklaert wird<sup>*</sup>, dann: Ja, die Aufgabe solltest du loesen koennen.<br />
Dein Buch ist Stroustrups &quot;Programming principles and practice using c++&quot;, oder?</p>
<p><sup>*</sup>: Grafische Ausgabe ist eigentlich kein Kernbestandteil des C++-Kurrikulums.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392855</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Apr 2014 17:17:11 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 17:50:04 GMT]]></title><description><![CDATA[<p>Ne ich bin stolzer Besitzer des Buches: C++ Lernen und professionell anwenden</p>
<p>Zum Beispiel werden im 4. Kapitel Schleifen erklärt,also was man mit ihnen machen kann usw.<br />
Wenn man dann zu den Aufgaben blättert, steht da dann z.B.</p>
<p>Programmieren Sie folgendes Zahlenbeispiel:</p>
<p>Der Computer merkt sich eine Zufallszahl zwischen 1 und 15, die der Spieler (=Benutzer) erraten soll. Der Spieler hat insgesamt drei Versuche. Nach jedem<br />
falschen Versuch gibt der Computer an, ob die angegebene Zahl zu klein oder zu groß ist. Ist auch der dritte Versuch erfolglos, wird die gesuchte Zahl ausgegegeben.</p>
<p>Der Spieler hat gewonnen, wenn er spätestens beim dritten Versuch die Zahl errät.<br />
Er soll das Spiel beliebig oft wiederholen können.</p>
<p>Zu Initalisierung des Zufallszahlengenerator verwenden Sie die Systemzeit. Die Funktion time() liefert die Anzahl Sekunden seit dem 1.1.1970, 0:0Uhr. Der<br />
long-Wert der Variable sek wird durch unsigned (sek) in einen unsigned-Wert<br />
umgewandekt und dann der funktion srand() übergeben.</p>
<p>Davon verstehe ich nur die hälfte und die Lösung zu dieser Aufgabe ist noch<br />
komplizierter...<br />
Also die time() Funktion kam bisher nicht einmal vor....</p>
<p>Das ist die Lösung:</p>
<pre><code>//  zahlenSp.cpp  :  Ein Zahlenspiel gegen den Computer 
// ------------------------------------------------------------

#include &lt;cstdlib&gt;      // Prototypen von srand() und rand()
#include &lt;ctime&gt;        // Prototyp von time() 
#include &lt;iostream&gt;
using namespace std;

int main()
{
    int  zahl, versuch; 
    char wb = 'w';           // wiederholen oder beenden
    time_t sek;

    time( &amp;sek);             // Zeit in Sekunden lesen 
    srand((unsigned)sek);    // Zufallsgenerator initialisieren

    cout &lt;&lt; &quot;\n\n          &quot;
         &lt;&lt; &quot; *******    EIN  ZAHLENSPIEL    *******&quot; &lt;&lt; endl;

    cout &lt;&lt; &quot;\n\nDie Spielregeln:&quot; &lt;&lt; endl;

    while( wb == 'w')
    {
       cout &lt;&lt; &quot;Ich merke mir eine Zahl zwischen 1 und 15\n&quot;
            &lt;&lt; &quot;Sie haben drei Versuche die Zahl zu raten!\n&quot;
            &lt;&lt; endl;

       zahl = (rand() % 15) + 1;

       bool gefunden = false;
       int count = 0;
       while( !gefunden  &amp;&amp; count &lt; 3 )
       {
          cin.sync();              // Eigabepuffer löschen 
          cin.clear();
          cout &lt;&lt; ++count &lt;&lt; &quot;. Versuch:   &quot;;
          cin &gt;&gt; versuch;

          if( versuch &lt; zahl)      cout &lt;&lt; &quot;zu klein!&quot; &lt;&lt; endl;
          else if( versuch &gt; zahl) cout &lt;&lt; &quot;zu gross!&quot; &lt;&lt; endl;
          else                     gefunden = true;
       }

       if( !gefunden)
         cout &lt;&lt; &quot;\nIch habe gewonnen!&quot;
              &lt;&lt; &quot; Die gesuchte Zahl: &quot; &lt;&lt; zahl &lt;&lt; endl;
       else
         cout &lt;&lt; &quot;\nBravo! Sie haben gewonnen!&quot; &lt;&lt; endl;

       cout &lt;&lt; &quot;Wiederholen --&gt; &lt;w&gt;    Beenden --&gt; &lt;b&gt;&quot; &lt;&lt; endl;
       do
         cin.get(wb);
       while( wb != 'w' &amp;&amp;  wb != 'b');
    }
    return 0;  
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2392859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392859</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 17:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 18:15:48 GMT]]></title><description><![CDATA[<p>Die Zeilen 35 und 36 sind totaler Quark, aber ansonsten: Findest du das wirklich schwer? Das mit der Initialisierung des Zufallsgenerators ist etwas kompliziert ausgedrueckt. Haettest du aber die Grundfunktion auch nicht selber hin bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392865</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Apr 2014 18:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 18:21:14 GMT]]></title><description><![CDATA[<p>Doch naklar ich hab sogar das Programm alleine fertiggestellt nur dafür brauchte ich nen halben tag glaube ich (mit pausen) also ich verstehe es jetzt schon nur<br />
davor war es total schwer weil es im Buch noch nie erklärt wurde</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392866</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 18:21:14 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 18:30:24 GMT]]></title><description><![CDATA[<p>Schwer darf so eine Aufgabe ja auch durchaus sein. Du sollst ja was bei lernen. Unter anderem, wie man eine schier unloesbar erscheinende Problemstellung angeht. Wenn du selber auf die Loesung kommst, ist das ein gutes Zeichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392868</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Apr 2014 18:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 18:35:22 GMT]]></title><description><![CDATA[<p>Ist es eigentlich schlecht wenn man etwas googelt was man nicht verstanden hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392871</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Fri, 04 Apr 2014 18:35:22 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Fri, 04 Apr 2014 18:54:37 GMT]]></title><description><![CDATA[<p>Talon schrieb:</p>
<blockquote>
<p>Ist es eigentlich schlecht wenn man etwas googelt was man nicht verstanden hat?</p>
</blockquote>
<p>Nein, im Gegenteil. Das ist, wie du spaeter ueberhaupt alles lernst, wenn du mal ueber die Anfaengerbuecher hinaus bist. Daher ist es gut, zu lernen, wie man gut googelt.</p>
<p>Siehe auch die Linkliste fuer Neulinge hier im Forum. Insbesondere die dort angegebenen Referenzen sind sehr nuetzlich zur Selbsthilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392875</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Apr 2014 18:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Sat, 05 Apr 2014 07:09:20 GMT]]></title><description><![CDATA[<p>Welche Linkliste??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392916</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Sat, 05 Apr 2014 07:09:20 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Sat, 05 Apr 2014 07:48:30 GMT]]></title><description><![CDATA[<p>Talon schrieb:</p>
<blockquote>
<p>Welche Linkliste??</p>
</blockquote>
<p>Auf der ersten Seite von diesem Unterforum, ganz oben der erste Thread.<br />
Ist sogar als wichtig markiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392918</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 05 Apr 2014 07:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Sat, 05 Apr 2014 08:50:19 GMT]]></title><description><![CDATA[<p>Achsoo habe ich wohl übersehen danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392924</guid><dc:creator><![CDATA[Talon]]></dc:creator><pubDate>Sat, 05 Apr 2014 08:50:19 GMT</pubDate></item><item><title><![CDATA[Reply to Arithmetische Typenumwandlung on Sat, 05 Apr 2014 09:06:14 GMT]]></title><description><![CDATA[<p>Talon schrieb:</p>
<blockquote>
<p>Achsoo habe ich wohl übersehen danke</p>
</blockquote>
<p>Das ist so gewollt.</p>
<p>Das <strong>Wichtig:</strong> erzeugt ein <a href="http://de.wikipedia.org/wiki/Hintergr%C3%BCnde_zu_Per_Anhalter_durch_die_Galaxis#Problem-anderer-Leute-Feld" rel="nofollow">PAL-Feld</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392925</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 05 Apr 2014 09:06:14 GMT</pubDate></item></channel></rss>