<?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[Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen]]></title><description><![CDATA[<p>hi!<br />
Ich hab hier mal einen Codeschnipsel:</p>
<pre><code class="language-cpp">struct qchar
{
 unsigned char bytes[3];
};

qchar char2qchar(char c1, char c2, char c3, char c4)
{
  qchar qc1;
  qc1.bytes[0]=c1;
  qc1.bytes[1]=c2;
  qc1.bytes[2]=c3;
  qc1.bytes[3]=c4;
  ShowMessage(qc1.bytes[3]);
  return qc1;
}

int qchar2long (qchar qc1)
{
ShowMessage(qc1.bytes[3]);
signed int i1, i2, i3, i4;
i1 = qc1.bytes[0];
i2 = (int(qc1.bytes[1]) &lt;&lt; 8);
i3 = (int(qc1.bytes[2]) &lt;&lt; 16);
i4 = (int(qc1.bytes[3]) &lt;&lt; 24);
return i1+i2+i3+i4;
}
</code></pre>
<p>Wenn ich jetzt der Funktion char2qchar(char(50), char(0), char(0), char(0));<br />
übergebe, dann sagt die erste Meldung, dass das 4. char 0 enthält.<br />
übergebe ich jetzt das qchar, dass in der char2qchar()-Funktion enstanden ist an die Funktion qchar2long(), dann sagt die 2. meldung plötzlich, dass das 4. char vom qchar 247 ist. Wie kann das sein? Warum wird der Wert vom char nur durch die Wertübergabe verändert?</p>
<p>Ich schreibe das hier ins C++Builder Forum, weil mir dieses Problem genau mit diesem entstanden ist. Bei Dev C++ gab's (in natürlich leicht veränderter Form) keine Probleme.</p>
<p>Bitte helft mir!!</p>
<p>mfg, chris90</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/83565/suspekte-wertveränderungen-bei-char-durch-wertübergabe-bei-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 23:58:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/83565.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Aug 2004 11:52:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen on Sun, 22 Aug 2004 11:52:29 GMT]]></title><description><![CDATA[<p>hi!<br />
Ich hab hier mal einen Codeschnipsel:</p>
<pre><code class="language-cpp">struct qchar
{
 unsigned char bytes[3];
};

qchar char2qchar(char c1, char c2, char c3, char c4)
{
  qchar qc1;
  qc1.bytes[0]=c1;
  qc1.bytes[1]=c2;
  qc1.bytes[2]=c3;
  qc1.bytes[3]=c4;
  ShowMessage(qc1.bytes[3]);
  return qc1;
}

int qchar2long (qchar qc1)
{
ShowMessage(qc1.bytes[3]);
signed int i1, i2, i3, i4;
i1 = qc1.bytes[0];
i2 = (int(qc1.bytes[1]) &lt;&lt; 8);
i3 = (int(qc1.bytes[2]) &lt;&lt; 16);
i4 = (int(qc1.bytes[3]) &lt;&lt; 24);
return i1+i2+i3+i4;
}
</code></pre>
<p>Wenn ich jetzt der Funktion char2qchar(char(50), char(0), char(0), char(0));<br />
übergebe, dann sagt die erste Meldung, dass das 4. char 0 enthält.<br />
übergebe ich jetzt das qchar, dass in der char2qchar()-Funktion enstanden ist an die Funktion qchar2long(), dann sagt die 2. meldung plötzlich, dass das 4. char vom qchar 247 ist. Wie kann das sein? Warum wird der Wert vom char nur durch die Wertübergabe verändert?</p>
<p>Ich schreibe das hier ins C++Builder Forum, weil mir dieses Problem genau mit diesem entstanden ist. Bei Dev C++ gab's (in natürlich leicht veränderter Form) keine Probleme.</p>
<p>Bitte helft mir!!</p>
<p>mfg, chris90</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588223</guid><dc:creator><![CDATA[chris90]]></dc:creator><pubDate>Sun, 22 Aug 2004 11:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen on Sun, 22 Aug 2004 12:41:43 GMT]]></title><description><![CDATA[<p>Diese leicht veränderte Form würde mcih grundsätzlich mal interessieren...</p>
<p>-junix</p>
<p>EDIT: Ausserdem würde ich dir empfehlen mal zu überprüfen ob du nicht irgendwelche Bereichs überschreitungen in deinem char-Array betreibst?<br />
Tip: Die Antwort ist ja. Findest du auch den Grund dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588269</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sun, 22 Aug 2004 12:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen on Sun, 22 Aug 2004 12:44:14 GMT]]></title><description><![CDATA[<p>bytes ist ein Array von drei unsigned char und hat damit nur drei gültige Indices: 0, 1 und 2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588278</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 22 Aug 2004 12:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen on Sun, 22 Aug 2004 16:04:49 GMT]]></title><description><![CDATA[<p>mom bytes[3] deklariert doch wohl ein char-array mit 4 mitgliedern, oder?<br />
Also das hätt ich jetzt nie geglaubt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588427</guid><dc:creator><![CDATA[chris90]]></dc:creator><pubDate>Sun, 22 Aug 2004 16:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Suspekte Wertveränderungen bei char durch Wertübergabe bei Funktionen on Sun, 22 Aug 2004 21:15:54 GMT]]></title><description><![CDATA[<p>chris90 schrieb:</p>
<blockquote>
<p>mom bytes[3] deklariert doch wohl ein char-array mit 4 mitgliedern, oder?</p>
</blockquote>
<p>Falls das keine rethorische Frage war: nein, du hast ein Array mit drei Elementen. Du brauchst aber Platz für mindestens 4, wenn nicht sogar 5 (Null-Terminierung von char-Arrays).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588654</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 22 Aug 2004 21:15:54 GMT</pubDate></item></channel></rss>