<?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[Größe von Standarddatentypen auf unterschiedlichen Systemen?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab die Suche schon malträtiert und den C++ Standard (Draft von 1996) überflogen, aber leider keine Antwort auf die Frage gefunden:</p>
<p>Ist irgendwo festgelegt welche Größe die einzelnen Standarddatentypen (long, int, double, float, etc.) auf verschiedenen Systemen bzw. Prozessorarchitekturen (16 bit, 32 bit oder 64 bit) besitzen müssen? Ich hab jetzt schon des öfteren gehört, dass das sogar vom Compiler abhängen kann.</p>
<p>Wenn ich jetzt beispielsweise ein Programm von einer Architektur auf die nächste portiere, ist das Thema ja recht wichtig. Klar, ich könnte jetzt auf jedem System erst mal mit sizeof() abfragen wie groß die Datentypen sind, aber leichter währe es natürlich wenn das irgendwo fix festgelegt wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219767/größe-von-standarddatentypen-auf-unterschiedlichen-systemen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 18:05:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219767.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Aug 2008 11:13:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 11:13:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab die Suche schon malträtiert und den C++ Standard (Draft von 1996) überflogen, aber leider keine Antwort auf die Frage gefunden:</p>
<p>Ist irgendwo festgelegt welche Größe die einzelnen Standarddatentypen (long, int, double, float, etc.) auf verschiedenen Systemen bzw. Prozessorarchitekturen (16 bit, 32 bit oder 64 bit) besitzen müssen? Ich hab jetzt schon des öfteren gehört, dass das sogar vom Compiler abhängen kann.</p>
<p>Wenn ich jetzt beispielsweise ein Programm von einer Architektur auf die nächste portiere, ist das Thema ja recht wichtig. Klar, ich könnte jetzt auf jedem System erst mal mit sizeof() abfragen wie groß die Datentypen sind, aber leichter währe es natürlich wenn das irgendwo fix festgelegt wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560778</guid><dc:creator><![CDATA[BugJoe]]></dc:creator><pubDate>Thu, 07 Aug 2008 11:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 11:53:15 GMT]]></title><description><![CDATA[<p>Die sind nirgends festgelegt. Schliesslich ist C++ platformneutral. Es gibt aber so eine Regel:</p>
<p>char &lt;= bool &lt;= short &lt;= int &lt;= long</p>
<p>Da char mind. 8 bits groß ist, ist es bool somit mind. auch, usw.</p>
<p>Die Größen sind im Standard-Header &lt;limits&gt; festgelegt und können somit von dir genutzt werden. Das geht auch über Metaprogrammierung und somit auch schon zur Compiletime.</p>
<p>Achja, und natürlich hat jeder Compiler meistens eigene Größen. Z.B. ist wchar_t auf MSC++ 16 bit breit, und der MinGW macht 32 bit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560804</guid><dc:creator><![CDATA[BarnieGeroellheimer]]></dc:creator><pubDate>Thu, 07 Aug 2008 11:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 12:38:11 GMT]]></title><description><![CDATA[<p>Das bedeutet im Umkehrschluss, dass solche Tabellen wie <a href="http://www.datasource.de/programmierung/tab33_cppdatentypen.html" rel="nofollow">diese hier</a> ohne Angaben des Compilers komplett Sinnfrei sind?</p>
<p>Es hängt also nicht <strong>auch</strong> vom Compiler ab sondern <strong>nur</strong> vom Compiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560830</guid><dc:creator><![CDATA[BugJoe]]></dc:creator><pubDate>Thu, 07 Aug 2008 12:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 12:39:58 GMT]]></title><description><![CDATA[<p>BugJoe schrieb:</p>
<blockquote>
<p>Das bedeutet im Umkehrschluss, dass solche Tabellen wie <a href="http://www.datasource.de/programmierung/tab33_cppdatentypen.html" rel="nofollow">diese hier</a> ohne Angaben des Compilers komplett Sinnfrei sind?</p>
<p>Es hängt also nicht <strong>auch</strong> vom Compiler ab sondern <strong>nur</strong> vom Compiler?</p>
</blockquote>
<p>Komplett sinnfrei würde ich nicht sagen. Im Normal Fall stimmen die Angaben schon, aber wenn du es genau wissen willst, musst du dich an deine Implementierung halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560833</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 07 Aug 2008 12:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 12:50:15 GMT]]></title><description><![CDATA[<p>BugJoe schrieb:</p>
<blockquote>
<p>Das bedeutet im Umkehrschluss, dass solche Tabellen wie <a href="http://www.datasource.de/programmierung/tab33_cppdatentypen.html" rel="nofollow">diese hier</a> ohne Angaben des Compilers komplett Sinnfrei sind?</p>
</blockquote>
<p>Sinnfrei sicher nicht, aber es handelt sich nur um Angaben für typische Systeme.<br />
Grundsätzlich schreibt der Compiler einen Mindestbereich der Werte vor, die ein bestimmter arithmetischer Typ darstellen können muss. Da Integertypen ein binäres Positionssystem zu Darstellung dieser Werte verwenden müssen, kann man aus diesen Mindestwertebereichen eine minimale Bitzahl bestimmen, die der jeweilige Typ hat (char: 8; short/int: 16; long: 32 bits). Ob man daraus zwingend die relativen Größen von Objekten des Typs ableiten kann, könnte ich nicht einfach so beantworten (also die Frage, ob nicht z.B. ein short intern soviel padding enthalten könnte, dass der Typ größer als ein int wird, obwohl der darstellbare Wertebereich nicht größer ist) - allerdings ist das wahrscheinlich beabsichtigt und wird praktisch immer zutreffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560841</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 07 Aug 2008 12:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 13:00:59 GMT]]></title><description><![CDATA[<p>Also legt der Compilerhersteller letztendlich die Größe der Datentypen fest? Nicht der Betriebsystemhersteller und nicht der Prozessorherteller? Wobei natürlich viele Compiler von den Prozessorherstellern selbst kommen, aber wie macht es jetzt beispielsweise der GCC? Legt der die Größe der Datentypen anhand der zugrunde liegenden Prozessorarchitektur fest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560856</guid><dc:creator><![CDATA[BugJoe]]></dc:creator><pubDate>Thu, 07 Aug 2008 13:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 14:10:05 GMT]]></title><description><![CDATA[<p>BugJoe schrieb:</p>
<blockquote>
<p>Also legt der Compilerhersteller letztendlich die Größe der Datentypen fest? Nicht der Betriebsystemhersteller und nicht der Prozessorherteller?</p>
</blockquote>
<p>So ist es!</p>
<p>BugJoe schrieb:</p>
<blockquote>
<p>aber wie macht es jetzt beispielsweise der GCC? Legt der die Größe der Datentypen anhand der zugrunde liegenden Prozessorarchitektur fest?</p>
</blockquote>
<p>Mußt du in die GCC-Doku schauen. Glaube nicht, das der GCC das pro Prozessor festlegt, sondern bestimmt jeder das selber bestimmen kann, wenn er einen GCC für eine Plattform baut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560904</guid><dc:creator><![CDATA[BarnieGeroellheimer]]></dc:creator><pubDate>Thu, 07 Aug 2008 14:10:05 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 14:20:59 GMT]]></title><description><![CDATA[<p>Danke schön, jetzt bin ich wieder etwas schlauer <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/1560910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560910</guid><dc:creator><![CDATA[BugJoe]]></dc:creator><pubDate>Thu, 07 Aug 2008 14:20:59 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 14:23:44 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2059">@BugJoe</a>: Werf mal einen Blick in die stdint.h. Wenn du die Größen der Datentypen genau bestimmt haben willst, kannst du die typedefs darin verwenden, also z.B. int32_t für einen 32-bittigen signed int oder uint8_t für einen unsigned char.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560912</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Thu, 07 Aug 2008 14:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 15:53:15 GMT]]></title><description><![CDATA[<p>Hm, aber ist das so problematisch, dass z.B. ein <code>int</code> auch auf 32-Bit-Systemen nur 16 Bit breit sein kann? Wenn das so wäre und in der Praxis auch vorkäme, könnte das sicher zu etlichen nicht funktionierenden Programme führen. Und immer auf <code>long</code> bzw. <code>short</code> zurückzugreifen ist ja auch nicht das Wahre (abgesehen davon, dass man sich nicht mal dort sicher sein kann)...</p>
<p>BarnieGeroellheimer schrieb:</p>
<blockquote>
<p>char &lt;= <strong>bool</strong> &lt;= short &lt;= int &lt;= long</p>
</blockquote>
<p>Ist das beabsichtigt, dass ein Wahrheitswert eventuell mehr Werte annehmen kann als ein Zeichen repräsentierender Datentyp? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560955</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 15:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 16:43:53 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>BarnieGeroellheimer schrieb:</p>
<blockquote>
<p>char &lt;= <strong>bool</strong> &lt;= short &lt;= int &lt;= long</p>
</blockquote>
<p>Ist das beabsichtigt, dass ein Wahrheitswert eventuell mehr Werte annehmen kann als ein Zeichen repräsentierender Datentyp? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>gcc auf Mac OS X auf der PowerPC-Architektur hat sizeof(bool) == 4, das kommt also auch bei nicht ganz so exotischen Systemen vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560982</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Thu, 07 Aug 2008 16:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 17:04:06 GMT]]></title><description><![CDATA[<p>Mit anderen Worten, bool hat in dieser Vergleichskette nichts verloren. Sicher ist nur, dass es einen integralen Typ gibt, der die gleiche Größe wie bool hat (analog: wchar_t).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560991</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 07 Aug 2008 17:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 18:01:23 GMT]]></title><description><![CDATA[<p>Ich nehme an, das rührt daher, dass es diese Typen in C noch nicht gab und sie sich in C++ deshalb an bereits existierenden Typen orientieren...</p>
<p>Und wie ist das jetzt mit dem <code>int</code> - muss man Angst haben, dass Programme wegen der 16-Bit-Breite nicht funktionieren, und besser auf <code>long</code> ausweichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561015</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 19:15:14 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich nehme an, das rührt daher, dass es diese Typen in C noch nicht gab und sie sich in C++ deshalb an bereits existierenden Typen orientieren...</p>
<p>Und wie ist das jetzt mit dem <code>int</code> - muss man Angst haben, dass Programme wegen der 16-Bit-Breite nicht funktionieren, und besser auf <code>long</code> ausweichen?</p>
</blockquote>
<p>Nö, das bringt dir auch nichts, da ja <code>long</code> schliesslich auch 16 bit sein kann. Wie gesagt, benutzt <code>&lt;limits&gt;</code> ! Dafür ist der Header gedacht! Mit tempaltes lässt sich dann der Typ entscheiden.</p>
<p>Oder definiert euch ein typedef, da ihr je nach Plattform einsetzt:</p>
<pre><code class="language-cpp">typedef int int32;
typedef short int16;
</code></pre>
<p>Und benutze dann int32, und bei einer anderen Plattform brauchste blos das typedef an einer Stelle anpassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561076</guid><dc:creator><![CDATA[BarnieGeroellheimer]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 19:22:24 GMT]]></title><description><![CDATA[<p>Sehr schön. Kurz gesagt, kann man die eingebauten Typen wie <code>char</code> , <code>short</code> , <code>int</code> , <code>long</code> in den Mülleimer kippen, wenn man auf den Wertebereich achten will?</p>
<p>Kaum, oder? Ich denke, es ist durchaus legitim, sich in den meisten Fällen auf die Standardbreiten zu verlassen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561081</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 20:49:15 GMT]]></title><description><![CDATA[<p>Also mal ehrlich. Der normale Menschenverstand sagt einem, das die meisten 32-Bit-Compiler ein int als 32 bit definieren. In den meisten Fällen reicht diese Vermutung aus. Man braucht ja nicht in jeder Codezeile eines Projektes einen genaue Breite, oder? Das braucht man meistens nur an bestimmten wenigen Codestellen.</p>
<p>Und wer doch in einem Projekt eine genaue Breite braucht... der muß dann halt auf <code>&lt;limits&gt;</code> oder <code>typedef</code> zugreifen.</p>
<p>Und wenn man mal auf nen exotischen Compiler portiert, der alles anders macht, dann hat man eh ein Problem.<br />
Machst du dir jetzt ne Birne, nur weil du das hier gelesen hast? Oder amchst du dir ne Birne, weil du in einem konkreten Projekt stehst, wo das wichtig ist? Ich würde mir doch keine Rübe machen, wenn ich davon garnicht betroffen bin. Ich wette, die meisten C++-Coder brauchen sich keine Rübe drüber machen. Weil sie meistens Highlevel programmieren. Und wenn mal der Fall eintritt... ja, dann gibts definitiv Lösungen!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561140</guid><dc:creator><![CDATA[BarnieGeroellheimer]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Thu, 07 Aug 2008 21:28:16 GMT]]></title><description><![CDATA[<p>BarnieGeroellheimer schrieb:</p>
<blockquote>
<p>Man braucht ja nicht in jeder Codezeile eines Projektes einen genaue Breite, oder? Das braucht man meistens nur an bestimmten wenigen Codestellen.</p>
</blockquote>
<p>Nicht ganz. Meistens rechnet man bei einem <code>int</code> nicht damit, dass er bei 32k bereits aufhört. Und das ist wohl nicht die Ausnahme im Code.</p>
<p>BarnieGeroellheimer schrieb:</p>
<blockquote>
<p>Machst du dir jetzt ne Birne, nur weil du das hier gelesen hast? Oder amchst du dir ne Birne, weil du in einem konkreten Projekt stehst, wo das wichtig ist? Ich würde mir doch keine Rübe machen, wenn ich davon garnicht betroffen bin. Ich wette, die meisten C++-Coder brauchen sich keine Rübe drüber machen.</p>
</blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Ich denke, es ist durchaus legitim, sich in den meisten Fällen auf die Standardbreiten zu verlassen...</p>
</blockquote>
<p>Was hast du an meinem Satz nicht verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561165</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 21:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to Größe von Standarddatentypen auf unterschiedlichen Systemen? on Fri, 08 Aug 2008 07:36:17 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>BarnieGeroellheimer schrieb:</p>
<blockquote>
<p>Man braucht ja nicht in jeder Codezeile eines Projektes einen genaue Breite, oder? Das braucht man meistens nur an bestimmten wenigen Codestellen.</p>
</blockquote>
<p>Nicht ganz. Meistens rechnet man bei einem <code>int</code> nicht damit, dass er bei 32k bereits aufhört. Und das ist wohl nicht die Ausnahme im Code.</p>
</blockquote>
<p>Aha? Und wann brauchst du <code>int</code> ? Wenn du das Maximum einer Plattform bzw. Compiler brauchst, dann nimm einfach <code>size_t</code> bzw. <code>std::size_t</code> . Wo ist das Problem? Man muß einfach nur wissen, wann man was benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561253</guid><dc:creator><![CDATA[BarnieGeroellheimer]]></dc:creator><pubDate>Fri, 08 Aug 2008 07:36:17 GMT</pubDate></item></channel></rss>