<?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[Unsigned Long = Unsigned Int! Warum?]]></title><description><![CDATA[<p>Hallo, ich hab durch Zufall heute den Artickel über Zufallszahlen: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html</a> entdeckt. Und hab Versucht mir eine eigene Klasse zur Erzeugung von Zufallszahlen zu schreiben.</p>
<p>Bei meinen Versuchen mit größeren (Zufalls-) Zahlen ist mir folgendes aufgefallen :<br />
<a href="http://img5.imagebanana.com/view/055a5wfb/ULongUInt.dib" rel="nofollow">http://img5.imagebanana.com/view/055a5wfb/ULongUInt.dib</a></p>
<p>Die Varable L (unsigned long) müsste größer sein als die Variable I (unsigned int), da ich beiden den größtmöglichen Wert für ihre Typen (ulong: 0xffffffffffffffff, uint: 0xffffffff, LIMITS.h) zugewiesen hab, sie haben aber beide den gleichen Wert. Und warum gibt der Debugger mir keinen Fehler in Zeile 9 aus, in der der Varialbe I ein größerer Wert zugewiesen wird, als sie aufnehmen kann.<br />
Ich weiß nicht ob das wichtig ist aber egal: Ich benutze noch die Beta von Windows 7(Evaluierungskopie Build 7100).</p>
<p>MfG Icon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253459/unsigned-long-unsigned-int-warum</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 16:49:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253459.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Nov 2009 17:57:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 17:57:17 GMT]]></title><description><![CDATA[<p>Hallo, ich hab durch Zufall heute den Artickel über Zufallszahlen: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html</a> entdeckt. Und hab Versucht mir eine eigene Klasse zur Erzeugung von Zufallszahlen zu schreiben.</p>
<p>Bei meinen Versuchen mit größeren (Zufalls-) Zahlen ist mir folgendes aufgefallen :<br />
<a href="http://img5.imagebanana.com/view/055a5wfb/ULongUInt.dib" rel="nofollow">http://img5.imagebanana.com/view/055a5wfb/ULongUInt.dib</a></p>
<p>Die Varable L (unsigned long) müsste größer sein als die Variable I (unsigned int), da ich beiden den größtmöglichen Wert für ihre Typen (ulong: 0xffffffffffffffff, uint: 0xffffffff, LIMITS.h) zugewiesen hab, sie haben aber beide den gleichen Wert. Und warum gibt der Debugger mir keinen Fehler in Zeile 9 aus, in der der Varialbe I ein größerer Wert zugewiesen wird, als sie aufnehmen kann.<br />
Ich weiß nicht ob das wichtig ist aber egal: Ich benutze noch die Beta von Windows 7(Evaluierungskopie Build 7100).</p>
<p>MfG Icon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802254</guid><dc:creator><![CDATA[Icon*]]></dc:creator><pubDate>Mon, 02 Nov 2009 17:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 18:15:56 GMT]]></title><description><![CDATA[<p>Icon² schrieb:</p>
<blockquote>
<p>Die Varable L (unsigned long) müsste größer sein als die Variable I (unsigned int) [...]</p>
</blockquote>
<p>Nein, müsste sie nicht. Der C++-Standard erlaubt durchaus, dass <code>unsigned long</code> und <code>unsigned int</code> die selbe Grösse besitzen.</p>
<p>Icon² schrieb:</p>
<blockquote>
<p>[...] da ich beiden den größtmöglichen Wert für ihre Typen (ulong: 0xffffffffffffffff, uint: 0xffffffff, LIMITS.h) zugewiesen hab</p>
</blockquote>
<p>Wenn du <code>&lt;limits.h&gt;</code> inkludierst (korrekt wäre eigentlich <code>&lt;climits&gt;</code> , C++-Standardheader besitzen keine Dateiendung), solltest du auch die Makros einsetzen und nicht mit Literalen wie <code>0xffffffff</code> hantieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802257</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Nov 2009 18:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 18:22:25 GMT]]></title><description><![CDATA[<p>Was heißt &quot;Literale&quot; ? Ich hab halt L = 0xFF..... geschrieben, wobei ich die selbe Anzahl an Fs genommen habe wie in LIMITS.H.<br />
Ja ich weiß dass der C++ Standard nur vorschreibt dass der Werte Brereich einer unsigned long größer oder gleich groß wie der Werte Bereich einer unsinged int.<br />
Aber ich benutze Windows 7 x64 und MSVC++ und dann müsste unsigned long doch eigentlich um den wert aus LIMITS.H größer sein, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802266</guid><dc:creator><![CDATA[Icon*]]></dc:creator><pubDate>Mon, 02 Nov 2009 18:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 18:28:59 GMT]]></title><description><![CDATA[<p>Icon² schrieb:</p>
<blockquote>
<p>Was heißt &quot;Literale&quot; ?</p>
</blockquote>
<p>Literale nennt man temporäre Objekte, deren Wert du gleich in den Code schreibst. Beispiele:</p>
<pre><code class="language-cpp">&quot;hallo&quot; // Stringliteral
77ul    // unsigned long-Literal
2.5     // double-Literal
false   // bool-Literal
</code></pre>
<p>Icon² schrieb:</p>
<blockquote>
<p>Ich hab halt L = 0xFF..... geschrieben, wobei ich die selbe Anzahl an Fs genommen habe wie in LIMITS.H.</p>
</blockquote>
<p>Was denkst du, wofür der Header ist? Sicher nicht, um dessen Inhalt abzuschreiben. <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="😉"
    /><br />
Benutze wie gesagt die dort definierten Makros. Welche das sind, findest du zum Beispiel auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> heraus.</p>
<p>Icon² schrieb:</p>
<blockquote>
<p>Ja ich weiß dass der C++ Standard nur vorschreibt dass der Werte Brereich einer unsigned long größer oder gleich groß wie der Werte Bereich einer unsinged int.<br />
Aber ich benutze Windows 7 x64 und MSVC++ und dann müsste unsigned long doch eigentlich um den wert aus LIMITS.H größer sein, oder nicht?</p>
</blockquote>
<p>Müsste nicht, das ist wiederum compilerabhängig. Nur weil du ein 64-Bit-System verwendest, heisst das noch nicht, dass <code>long</code> 64 Bit gross sein muss (es ist allerdings wahrscheinlicher). Eventuell kannst du die Grösse in der IDE konfigurieren (soviel ich weiss, kannst du zumindest einstellen, ob du für 32 oder 64 Bit kompilierst).</p>
<p>Ansonsten benutze den Typen <code>unsigned long long</code> , dieser ist allerdings nicht im C++-Standard enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802269</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Nov 2009 18:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 19:26:22 GMT]]></title><description><![CDATA[<p><code>&lt;Korinthenkacker-Mode&gt;</code><br />
Mit Ausnahme von String-Literalen sind Literale keine Objekte nach C++ Standard-Definition von &quot;Objekt&quot;.<br />
<code>&lt;/Korinthenkacker-Mode&gt;</code></p>
<p>Sonst empfehle ich immer wieder gerne die Seite <a href="http://home.att.net/~jackklein/c/inttypes.html" rel="nofollow">Integer Types in C and C++</a>.</p>
<blockquote>
<p>Ansonsten benutze den Typen <code>unsigned long long</code> , dieser ist allerdings nicht im C++-Standard enthalten.</p>
</blockquote>
<p>Oder von &lt;boost/cstdint.hpp&gt; den Typalias boost::uint_least64_t wenn man mindestens 64 Bits braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802322</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 02 Nov 2009 19:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 19:56:50 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p><code>&lt;Korinthenkacker-Mode&gt;</code><br />
Mit Ausnahme von String-Literalen sind Literale keine Objekte nach C++ Standard-Definition von &quot;Objekt&quot;.<br />
<code>&lt;/Korinthenkacker-Mode&gt;</code></p>
</blockquote>
<p>Und wie kommst du darauf, das Stringliterale, die in C++ den Typ char* haben,<br />
Objekte wären und das Floatliteral 4.5f kein Objekt?</p>
<p>Wenn schon, dann richtig <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/1802335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802335</guid><dc:creator><![CDATA[branleb]]></dc:creator><pubDate>Mon, 02 Nov 2009 19:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 20:06:03 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p><code>&lt;Korinthenkacker-Mode&gt;</code><br />
Mit Ausnahme von String-Literalen sind Literale keine Objekte nach C++ Standard-Definition von &quot;Objekt&quot;.<br />
<code>&lt;/Korinthenkacker-Mode&gt;</code></p>
</blockquote>
<p>Stimmt, ich dachte gerade nicht mehr daran, dass skalare RValues ja speziell behandelt werden...</p>
<p>branleb schrieb:</p>
<blockquote>
<p>Und wie kommst du darauf, das Stringliterale, die in C++ den Typ char* haben,<br />
Objekte wären und das Floatliteral 4.5f kein Objekt?</p>
<p>Wenn schon, dann richtig <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>
</blockquote>
<p>Das gilt auch für dich. Stringliterale haben den Typ <code>const char[size]</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802342</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Nov 2009 20:06:03 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 20:06:02 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>branleb schrieb:</p>
<blockquote>
<p>Und wie kommst du darauf, das Stringliterale, die in C++ den Typ char* haben,<br />
Objekte wären und das Floatliteral 4.5f kein Objekt?</p>
<p>Wenn schon, dann richtig <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>
</blockquote>
<p>Das gilt auch für dich. Stringliterale haben den Typ <code>const char[size]</code> .</p>
</blockquote>
<p>Verdammt - hast recht ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802343</guid><dc:creator><![CDATA[branleb]]></dc:creator><pubDate>Mon, 02 Nov 2009 20:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Mon, 02 Nov 2009 20:21:00 GMT]]></title><description><![CDATA[<p>branleb schrieb:</p>
<blockquote>
<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p><code>&lt;Korinthenkacker-Mode&gt;</code><br />
Mit Ausnahme von String-Literalen sind Literale keine Objekte nach C++ Standard-Definition von &quot;Objekt&quot;.<br />
<code>&lt;/Korinthenkacker-Mode&gt;</code></p>
</blockquote>
<p>Und wie kommst du darauf, das Stringliterale, die in C++ den Typ char* haben,</p>
</blockquote>
<p>Hamse nicht. String-Literale sind Lvalue-Ausdrücke vom Typ <code>const char[N]</code> , wobei N die Zahl der Zeichen (inklusive Nullterminator) sind. Alle anderen Literale sind Rvalue-Ausdrücke skalarer Typen. Die Definition von &quot;Objekt&quot; kann man in Abschnitt 1.8 nachlesen:</p>
<blockquote>
<p>The constructs in a C++ program create, destroy, refer to, access, and manipulate objects. An <em>object</em> is a region of storage. An object is created by a definition, by a new-expression or by the implementation when needed. [...]</p>
</blockquote>
<p>Und dann gibts noch Abschnitt 3.10:</p>
<blockquote>
<p>Every expression is either an <em>lvalue</em> or an <em>rvalue</em>.</p>
<p>An lvalue refers to an object or a function. Some rvalue expressions -- those of class or cv-qualified class type -- also refer to objects. [...]</p>
</blockquote>
<p>Und dann gibts noch Abschnitt 5.1</p>
<blockquote>
<p>[...]<br />
A literal is a primary expression. Its type depends on its form. A string literal is an lvalue; all other literals are rvalues.<br />
[...]</p>
</blockquote>
<p>Ob man jetzt skalare Rvalues als &quot;Objekte&quot; bezeichnen kann .... naja, das ist zumindest eine Grauzone, würde ich sagen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802349</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 02 Nov 2009 20:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 10:45:54 GMT]]></title><description><![CDATA[<p>Wenn ich anstatt einer &quot;unsigned long&quot; eine &quot;unsigned long long&quot; Variable nehme dann funktionierts.</p>
<pre><code class="language-cpp">unsigned int I = UINT_MAX;           // ==&gt; 4294967295
unsigned long L = ULONG_MAX;         // ==&gt; 4294967295
unsigned long long LL = ULLONG_MAX;  // ==&gt; 18446744073709551615
</code></pre>
<p>Das heißt, dass bei meinem MSVC++ Compiler &quot;long&quot; = &quot;int&quot; ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802589</guid><dc:creator><![CDATA[Icon*]]></dc:creator><pubDate>Tue, 03 Nov 2009 10:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 11:38:54 GMT]]></title><description><![CDATA[<p>Icon² schrieb:</p>
<blockquote>
<pre><code class="language-cpp">unsigned int I = UINT_MAX;           // ==&gt; 4294967295
unsigned long L = ULONG_MAX;         // ==&gt; 4294967295
unsigned long long LL = ULLONG_MAX;  // ==&gt; 18446744073709551615
</code></pre>
<p>Das heißt, dass bei meinem MSVC++ Compiler &quot;long&quot; = &quot;int&quot; ist.</p>
</blockquote>
<p>Kommt drauf an, was Du damit meinst. <code>long int</code> und <code>int</code> sind zwei verschiedene Typen. Du kannst zB Funktionen mit ihnen überladen oder sie als Template-Parameter benutzen. vector&lt;int&gt; und vector&lt;long&gt; sind dementsprechend auch zwei verschiedene Typen. long ist also <em>niemals</em> ein &quot;typedef&quot; (Alias) für int.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802612</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 03 Nov 2009 11:38:54 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 17:19:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/36159">@Sebastian</a> Pizer: Ja, klar hab mich nur undeutlich ausgedrückt. Ich meinte natürlich, dass &quot;long&quot; und &quot;int&quot; denselben Maximalen Wert haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802791</guid><dc:creator><![CDATA[Icon*]]></dc:creator><pubDate>Tue, 03 Nov 2009 17:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 20:09:12 GMT]]></title><description><![CDATA[<p>Icon² schrieb:</p>
<blockquote>
<p>Das heißt, dass bei meinem MSVC++ Compiler &quot;long&quot; = &quot;int&quot; ist.</p>
</blockquote>
<p>Von solchen &quot;Annahmen&quot; sollte man grundsätzlich die Finger lassen, das geht irgend wann schief. Denn im 32Bit und im 64Bit Modus sind die die Typen unterschiedlich definiert, d.h. was im 32Bit Modus gültig ist, muß im 64Bit Modus längst nicht gültig sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802869</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Tue, 03 Nov 2009 20:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 20:11:06 GMT]]></title><description><![CDATA[<p>~john schrieb:</p>
<blockquote>
<p>Denn im 32Bit und im 64Bit Modus sind die die Typen unterschiedlich definiert, d.h. was im 32Bit Modus gültig ist, muß im 64Bit Modus längst nicht gültig sein.</p>
</blockquote>
<p>Und von Compiler zu Compiler kann es ebenfalls unterschiedlich sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802871</guid><dc:creator><![CDATA[branleb]]></dc:creator><pubDate>Tue, 03 Nov 2009 20:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unsigned Long = Unsigned Int! Warum? on Tue, 03 Nov 2009 20:26:16 GMT]]></title><description><![CDATA[<p>Das Beste ist sowieso, man verlässt sich nicht auf irgendwelche implementierungsabhängigen Dinge. Gerade für sowas gibts ja <code>sizeof</code> und die Header <code>&lt;limits&gt;</code> bzw. <code>&lt;climits&gt;</code> . Im Notfall hat man immer noch Static-Assertions zur Verfügung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802878</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 03 Nov 2009 20:26:16 GMT</pubDate></item></channel></rss>