<?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[Wertebereich von usigned char in Bezug auf Zeichenausgabe]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin momentan am Durcharbeiten des Buches C++ lernen und professionell anwenden. Hierbei bin ich bei einer Aufgabe auf eine Verhaltensweise des Compilers gestoßen, die sich für mich nicht ganz nachvollziehen lässt und die Erklärung des Buches ist in diesem Fall für mich nicht ausreichend. Es wird eine positive Ganzzahl eingegeben und von dieser Ganzzahl soll auch der entsprechende Zeichencode ausgegeben werden. Bei einer Eingabe von 336, erzeugt dies die Ausgabe von P (entspricht dem Wert 80 in der ASCII Tabelle) und hier liegt mein Problem. Ich weiß, dass der Wertebereich von usigned char bei 0-255 liegt und dass 336 über dem Wertebereich liegt. Die Frage die sich mir stellt, ich würde schließen, dass der Compiler den Abstand zwischen 255 und 336 ermittelt, also 81. Aber er scheint den Abstand von 256 zu 336 zu ermitteln, dies entspricht 80 und somit P. Wenn mir jemand diese Verhaltensweise erklären könnte, wäre ich wirklich dankbar, da ich hier etwas im Dunkeln tappe.</p>
<p>Hier der Beispielcode:</p>
<pre><code>int main()
{
	unsigned char zeichen = 0;
	unsigned int code = 0;

	cout &lt;&lt; &quot;Bitte geben sie einen beliebigen Zeichencode&quot; 
		 &lt;&lt; &quot;(eine positive Ganzzahl) ein: &quot;
		 &lt;&lt; endl;
	cin  &gt;&gt; code;

	zeichen = code;

	cout &lt;&lt; &quot;Die eingegebene Zahl entspricht dem Zeichen: &quot; &lt;&lt; zeichen
		 &lt;&lt; endl;

	return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/321117/wertebereich-von-usigned-char-in-bezug-auf-zeichenausgabe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 14:19:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321117.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Oct 2013 16:24:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wertebereich von usigned char in Bezug auf Zeichenausgabe on Thu, 24 Oct 2013 16:36:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin momentan am Durcharbeiten des Buches C++ lernen und professionell anwenden. Hierbei bin ich bei einer Aufgabe auf eine Verhaltensweise des Compilers gestoßen, die sich für mich nicht ganz nachvollziehen lässt und die Erklärung des Buches ist in diesem Fall für mich nicht ausreichend. Es wird eine positive Ganzzahl eingegeben und von dieser Ganzzahl soll auch der entsprechende Zeichencode ausgegeben werden. Bei einer Eingabe von 336, erzeugt dies die Ausgabe von P (entspricht dem Wert 80 in der ASCII Tabelle) und hier liegt mein Problem. Ich weiß, dass der Wertebereich von usigned char bei 0-255 liegt und dass 336 über dem Wertebereich liegt. Die Frage die sich mir stellt, ich würde schließen, dass der Compiler den Abstand zwischen 255 und 336 ermittelt, also 81. Aber er scheint den Abstand von 256 zu 336 zu ermitteln, dies entspricht 80 und somit P. Wenn mir jemand diese Verhaltensweise erklären könnte, wäre ich wirklich dankbar, da ich hier etwas im Dunkeln tappe.</p>
<p>Hier der Beispielcode:</p>
<pre><code>int main()
{
	unsigned char zeichen = 0;
	unsigned int code = 0;

	cout &lt;&lt; &quot;Bitte geben sie einen beliebigen Zeichencode&quot; 
		 &lt;&lt; &quot;(eine positive Ganzzahl) ein: &quot;
		 &lt;&lt; endl;
	cin  &gt;&gt; code;

	zeichen = code;

	cout &lt;&lt; &quot;Die eingegebene Zahl entspricht dem Zeichen: &quot; &lt;&lt; zeichen
		 &lt;&lt; endl;

	return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2362683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362683</guid><dc:creator><![CDATA[Raw]]></dc:creator><pubDate>Thu, 24 Oct 2013 16:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wertebereich von usigned char in Bezug auf Zeichenausgabe on Thu, 24 Oct 2013 16:33:47 GMT]]></title><description><![CDATA[<p>wenn du das verhalten nachprogrammieren möchtest:</p>
<p>modulo-operator</p>
<pre><code>zeichen = static_cast&lt;unsigned char&gt;(code % (1 + std::numeric_limits&lt;unsigned char&gt;::max()));
</code></pre>
<p>edit: was wirklich passiert wenn du ein wert der grösser ist als <code>std::numeric_limits&lt;unsigned char&gt;::max()</code> (meist 255) einem <code>unsigend char</code> zuweist, ist ub.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362684</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 24 Oct 2013 16:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wertebereich von usigned char in Bezug auf Zeichenausgabe on Thu, 24 Oct 2013 16:37:09 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort.</p>
<p>Edit: Frage hat sich erledigt, danke für dein Beispiel, das war die Erklärung die ich gesucht habe! <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/2362686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362686</guid><dc:creator><![CDATA[Raw]]></dc:creator><pubDate>Thu, 24 Oct 2013 16:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wertebereich von usigned char in Bezug auf Zeichenausgabe on Thu, 24 Oct 2013 17:19:55 GMT]]></title><description><![CDATA[<p>igno schrieb:</p>
<blockquote>
<p>edit: was wirklich passiert wenn du ein wert der grösser ist als <code>std::numeric_limits&lt;unsigned char&gt;::max()</code> (meist 255) einem <code>unsigend char</code> zuweist, ist ub.</p>
</blockquote>
<p>das ist entweder wohldefiniert, wenn char vorzeichenlos ist, sonst implementation defined</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362696</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Oct 2013 17:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wertebereich von usigned char in Bezug auf Zeichenausgabe on Thu, 24 Oct 2013 20:14:24 GMT]]></title><description><![CDATA[<blockquote>
<p>das ist entweder wohldefiniert, wenn char vorzeichenlos ist</p>
</blockquote>
<p>Das ist immer wohldefiniert. Lies mal genau dein Zitat. <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/2362722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362722</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 24 Oct 2013 20:14:24 GMT</pubDate></item></channel></rss>