<?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[Zuweisungen]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich ein long mit einem longlong verodere passiert Folgendes:</p>
<p>LONGLONG long<br />
0x0200000000000000 | 0xffe30b54 = 0xffffffffffe30b54</p>
<p>Eigentlich sollte doch 0x02000000ffe30b54 herauskommen?!?</p>
<p>Meine erste Vermutung war, dass das long automatisch in ein longlong konvertiert wird und er dann irgendwelchen Speicher dafür nimmt der zufällig gefüllt ist.</p>
<p>Wenn ich aber Folgendes mache:<br />
LONGLONG long<br />
0x0000000000000000 | 0x02000000 = 0x0000000002000000</p>
<p>Dann stimmt das Ergebnis.</p>
<p>Hat das vielleicht irgendwas damit zu tun dass beides signed-Typen sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196157/zuweisungen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 07:05:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196157.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Oct 2007 07:01:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zuweisungen on Fri, 26 Oct 2007 07:01:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich ein long mit einem longlong verodere passiert Folgendes:</p>
<p>LONGLONG long<br />
0x0200000000000000 | 0xffe30b54 = 0xffffffffffe30b54</p>
<p>Eigentlich sollte doch 0x02000000ffe30b54 herauskommen?!?</p>
<p>Meine erste Vermutung war, dass das long automatisch in ein longlong konvertiert wird und er dann irgendwelchen Speicher dafür nimmt der zufällig gefüllt ist.</p>
<p>Wenn ich aber Folgendes mache:<br />
LONGLONG long<br />
0x0000000000000000 | 0x02000000 = 0x0000000002000000</p>
<p>Dann stimmt das Ergebnis.</p>
<p>Hat das vielleicht irgendwas damit zu tun dass beides signed-Typen sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392286</guid><dc:creator><![CDATA[Diesel]]></dc:creator><pubDate>Fri, 26 Oct 2007 07:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungen on Fri, 26 Oct 2007 07:14:53 GMT]]></title><description><![CDATA[<p>Ja, es hat etwas damit zu tun, daß 'long' signed ist - in 0xFF... gilt das oberste Bit als Vorzeichen und bei der Umwandlung nach 'long long' wird dieses Vorzeichen beibehalten. Die Lösung wäre es, mit vorzeichenlosen Daten zu rechnen (die bekommst du, indem du ein 'u' an die Konstante anhängst: 0xffe30b54u).</p>
<p>(btw, größere Typen als long gehören nicht zum offiziellen ANSI-Standard)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392294</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 26 Oct 2007 07:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungen on Fri, 26 Oct 2007 08:04:38 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.<br />
Aber warum füllt er dann alles mit f auf anstatt nur das oberste Bit zu setzen?<br />
Wenn er es ins 2-komplement umwandeln würde, müsste er ja insgesamt noch 1 addieren<br />
oder?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392317</guid><dc:creator><![CDATA[Diesel]]></dc:creator><pubDate>Fri, 26 Oct 2007 08:04:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungen on Fri, 26 Oct 2007 08:09:10 GMT]]></title><description><![CDATA[<p>In Abwesenheit von Suffixen ist der Typ eines hexadezimalen Integerliterals der erste der Typen int,unsigned,long,unsigned long,long long, unsigned long long, der den Wert repräsentieren kann - bei einem normalen 32bit-PC wäre das hier unsigned. Die integrale Konvertierung in long long vor der Ausführung des |-Operators verändert den Wert nicht, da dieser in long long dargestellt werden kann. Mithin ist der Compiler nicht standardkonform (wenn wir die long long-Problematik ignorieren - das würde ich hier nicht ankreiden) oder die Plattform benutzt andere Typgrößen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392321</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 26 Oct 2007 08:09:10 GMT</pubDate></item></channel></rss>