<?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[(un)signed char]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich war bisher der Auffassung (und &quot;Die C++-Programmiersprache&quot; hat mich darin gerade auch bestärkt), dass ein 'char' abhängig von der Implementierung entweder ein 'signed char' oder ein 'unsigned char' ist.</p>
<p>Offensichtlich ist das aber zumindest im VC 8.0 nicht der Fall, wie folgender Code illustiert:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void test(char const&amp;) { std::cout &lt;&lt; &quot;char&quot; &lt;&lt; std::endl; }

void test(unsigned char const&amp;) { std::cout &lt;&lt; &quot;unsigned char&quot; &lt;&lt; std::endl; }

void test(signed char const&amp;) { std::cout &lt;&lt; &quot;signed char&quot; &lt;&lt; std::endl; }

int main()
{
    char ca = 'R';
    unsigned char cb = 'R';
    signed char cc = 'R';

    test(ca);
    test(cb);
    test(cc);
}
</code></pre>
<p>Die Ausgabe davon ist</p>
<pre><code>char
unsigned char
signed char
</code></pre>
<p>Das wundert mich, ich dachte bisher, 'char' sei intern einfach ein Typenalias für 'signed char' bzw. 'unsigned char'.</p>
<p>Wenn man den obigen Code mit 'int' statt mit 'char' schreib, gibt es übrigens, wie ich auch erwartet hätte, einen Fehler, dass die Funktion für 'int' doppelt definiert sei. D.h. 'int' ist sehr wohl dasselbe wie 'signed int'. Wieso ist das bei 'char' nicht so? Was sagt der Standard dazu? Ist das vielleicht nur ein Fehler im VC?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180223/un-signed-char</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 16:10:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180223.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Apr 2007 11:19:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (un)signed char on Mon, 30 Apr 2007 11:19:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich war bisher der Auffassung (und &quot;Die C++-Programmiersprache&quot; hat mich darin gerade auch bestärkt), dass ein 'char' abhängig von der Implementierung entweder ein 'signed char' oder ein 'unsigned char' ist.</p>
<p>Offensichtlich ist das aber zumindest im VC 8.0 nicht der Fall, wie folgender Code illustiert:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void test(char const&amp;) { std::cout &lt;&lt; &quot;char&quot; &lt;&lt; std::endl; }

void test(unsigned char const&amp;) { std::cout &lt;&lt; &quot;unsigned char&quot; &lt;&lt; std::endl; }

void test(signed char const&amp;) { std::cout &lt;&lt; &quot;signed char&quot; &lt;&lt; std::endl; }

int main()
{
    char ca = 'R';
    unsigned char cb = 'R';
    signed char cc = 'R';

    test(ca);
    test(cb);
    test(cc);
}
</code></pre>
<p>Die Ausgabe davon ist</p>
<pre><code>char
unsigned char
signed char
</code></pre>
<p>Das wundert mich, ich dachte bisher, 'char' sei intern einfach ein Typenalias für 'signed char' bzw. 'unsigned char'.</p>
<p>Wenn man den obigen Code mit 'int' statt mit 'char' schreib, gibt es übrigens, wie ich auch erwartet hätte, einen Fehler, dass die Funktion für 'int' doppelt definiert sei. D.h. 'int' ist sehr wohl dasselbe wie 'signed int'. Wieso ist das bei 'char' nicht so? Was sagt der Standard dazu? Ist das vielleicht nur ein Fehler im VC?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276212</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to (un)signed char on Mon, 30 Apr 2007 11:22:35 GMT]]></title><description><![CDATA[<p>Das Thema haben wir hier regelmäßig. Es sind drei verschiedene Typen, der VC hat Recht. Aber das Zitat, was dem im Stroustrup widerspricht, würde mich mal interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276216</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to (un)signed char on Mon, 30 Apr 2007 11:26:19 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich war bisher der Auffassung (und &quot;Die C++-Programmiersprache&quot; hat mich darin gerade auch bestärkt), dass ein 'char' abhängig von der Implementierung entweder ein 'signed char' oder ein 'unsigned char' ist.</p>
</blockquote>
<p>'char' ist laut Standard <strong>immer</strong> ein eigener Typ, der entweder mit 'signed char' oder mit 'unsigned char' den selben Wertebereich hat (diese Auswahl wird der Implementierung überlassen).</p>
<p>(im Gegensatz dazu ist 'int' wirklich eine Kurzform für 'signed int' (bzw. 'long'=='signed long int') - warum der Standard für char eine Sonderstellung definiert hat, interessiert mich aber auch)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276220</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to (un)signed char on Mon, 30 Apr 2007 11:30:40 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Das Thema haben wir hier regelmäßig.</p>
</blockquote>
<p>Oh. Ich hätte gar nicht gedacht, dass das im Alltag auffällt. Ich wäre nie darauf gekommen, wenn mir nicht eine Bibliothek mit Tag dispatching ausgeflippt wäre.</p>
<blockquote>
<p>Aber das Zitat, was dem im Stroustrup widerspricht, würde mich mal interessieren.</p>
</blockquote>
<p>Na, es war schon von mir hineininterpretiert. Auf Seite 78 dt. Ausgabe steht:</p>
<p>Stroustrup schrieb:</p>
<blockquote>
<p>Die Möglichkeit, einen <code>char</code> in ein <code>int</code> zu konvertieren wirft die Frage auf, ob ein <code>char</code> vorzeichenbehaftet … oder vorzeichenlos … ist. […] Leider ist diese Entscheidung … implementierungsabhängig …. C++ enthält zwei Typen, für die diese Antwort eindeutig ist: […]</p>
</blockquote>
<p>Allerdings stimmt es, er redet hier implizit von drei Typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276222</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:30:40 GMT</pubDate></item></channel></rss>