<?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[Implizite Typumwandlung?]]></title><description><![CDATA[<p>Hi,<br />
folgender Code:</p>
<pre><code class="language-cpp">unsigned char c1 = 155;
    unsigned char c2 = 175;

    unsigned char c3 = (c1 + c2) / 2;

    cout &lt;&lt; static_cast&lt;int&gt;(c3) &lt;&lt; endl;
</code></pre>
<p>Frage1: Warum wird hier 165 ausgegeben? Ich wuerde erwarten, c1 + c2 ergibt erst einmal einen Ueberlauf (da groesser als 255) und anschliessend 75. Werden chars implizit in einen groesseren Typ umgewandelt?</p>
<p>Frage2: Ist dieses Verhalten garantiert? Oder muss ich sowas schreiben, um stets auf meine 165 zu kommen:</p>
<pre><code class="language-cpp">unsigned char c3 = (static_cast&lt;unsigned int&gt;(c1) + c2) / 2;
</code></pre>
<p>?</p>
<p>Danke fuer eure Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215434/implizite-typumwandlung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 07:53:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215434.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Jun 2008 23:29:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implizite Typumwandlung? on Tue, 10 Jun 2008 23:29:02 GMT]]></title><description><![CDATA[<p>Hi,<br />
folgender Code:</p>
<pre><code class="language-cpp">unsigned char c1 = 155;
    unsigned char c2 = 175;

    unsigned char c3 = (c1 + c2) / 2;

    cout &lt;&lt; static_cast&lt;int&gt;(c3) &lt;&lt; endl;
</code></pre>
<p>Frage1: Warum wird hier 165 ausgegeben? Ich wuerde erwarten, c1 + c2 ergibt erst einmal einen Ueberlauf (da groesser als 255) und anschliessend 75. Werden chars implizit in einen groesseren Typ umgewandelt?</p>
<p>Frage2: Ist dieses Verhalten garantiert? Oder muss ich sowas schreiben, um stets auf meine 165 zu kommen:</p>
<pre><code class="language-cpp">unsigned char c3 = (static_cast&lt;unsigned int&gt;(c1) + c2) / 2;
</code></pre>
<p>?</p>
<p>Danke fuer eure Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526716</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Tue, 10 Jun 2008 23:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Typumwandlung? on Tue, 10 Jun 2008 23:47:09 GMT]]></title><description><![CDATA[<p>DeSoVoDaMu schrieb:</p>
<blockquote>
<p>Werden chars implizit in einen groesseren Typ umgewandelt?</p>
</blockquote>
<p>Stichwort: usual integral promotions<br />
Die Operanden werden in int (oder, auf einer exotischen Maschine mit sizeof(char)==sizeof(int): unsigned int; abstrakt: der kleinste Typ ab int aufwärts, der alle Werte des Originaltyps darstellen kann) umgewandelt, das Ergebnis der Addition hat dann ebenfalls diesen Typ. Da int wenigstens 16bit hat, kann hier mit diesen Werten kein Überlauf entstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526718</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 10 Jun 2008 23:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to Implizite Typumwandlung? on Tue, 10 Jun 2008 23:49:55 GMT]]></title><description><![CDATA[<p>Gut, danke fuer die Aufklaerung <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/1526719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526719</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Tue, 10 Jun 2008 23:49:55 GMT</pubDate></item></channel></rss>