<?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[32bit bzw. 64bit Zahlen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte in meinem letzten Programm meine Daten binär abgespeichert mit</p>
<pre><code class="language-cpp">fwrite(&amp;value, sizeof(long),  1, pOutfile);
</code></pre>
<p>Das war wahrscheinlich nicht die eleganteste Lösung (hatte den Code-Schnippsel aus einem alten Programm eines Kollegen). Wie auch immer ... dabei ist das Problem aufgetreten, je nachdem ob das Programm auf einem 32bit oder 64bit System lief, hatte value dann die Länge von 32bit bzw. 64bit ... blöd, wenn man die Daten von unterschiedlichen Rechnern wieder einlesen will und nicht mehr weiß ob nun 32 oder 64bit.</p>
<p>Damit mir das nicht wieder passiert soll in der neuen Version die Länge festgelegt sein ... zB. auf 32bit (64bit). Doch wie mache ich das am elegantesten?</p>
<p>Ich habe mir überlegt, anstelle von sizeof(long) einfach 32 zu schreiben ... ich weiß jedoch nicht, ob dann in einem 64bit System die Zahlen auch ordendlich übergeben werden ...</p>
<p>Kann man irgendwie festlegen, dass int immer 32bit sind und irgendwie was &quot;long int 64bit&quot;, oder so?</p>
<p>Ich habe von __int32, long long und int32_t gelesen, aber da gab es immer irgendwelche Diskussionen über Standards ... (gcc 4.5 meckert dass long long nicht ISO C++98 standard ist).</p>
<p>Gruß,<br />
HarryKane</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272505/32bit-bzw-64bit-zahlen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 12:45:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272505.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Aug 2010 16:42:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 16:42:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte in meinem letzten Programm meine Daten binär abgespeichert mit</p>
<pre><code class="language-cpp">fwrite(&amp;value, sizeof(long),  1, pOutfile);
</code></pre>
<p>Das war wahrscheinlich nicht die eleganteste Lösung (hatte den Code-Schnippsel aus einem alten Programm eines Kollegen). Wie auch immer ... dabei ist das Problem aufgetreten, je nachdem ob das Programm auf einem 32bit oder 64bit System lief, hatte value dann die Länge von 32bit bzw. 64bit ... blöd, wenn man die Daten von unterschiedlichen Rechnern wieder einlesen will und nicht mehr weiß ob nun 32 oder 64bit.</p>
<p>Damit mir das nicht wieder passiert soll in der neuen Version die Länge festgelegt sein ... zB. auf 32bit (64bit). Doch wie mache ich das am elegantesten?</p>
<p>Ich habe mir überlegt, anstelle von sizeof(long) einfach 32 zu schreiben ... ich weiß jedoch nicht, ob dann in einem 64bit System die Zahlen auch ordendlich übergeben werden ...</p>
<p>Kann man irgendwie festlegen, dass int immer 32bit sind und irgendwie was &quot;long int 64bit&quot;, oder so?</p>
<p>Ich habe von __int32, long long und int32_t gelesen, aber da gab es immer irgendwelche Diskussionen über Standards ... (gcc 4.5 meckert dass long long nicht ISO C++98 standard ist).</p>
<p>Gruß,<br />
HarryKane</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941656</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Wed, 18 Aug 2010 16:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 16:58:26 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich hatte in meinem letzten Programm meine Daten binär abgespeichert mit</p>
<pre><code class="language-cpp">fwrite(&amp;value, sizeof(long),  1, pOutfile);
</code></pre>
<p>Das war wahrscheinlich nicht die eleganteste Lösung (hatte den Code-Schnippsel aus einem alten Programm eines Kollegen). Wie auch immer ... dabei ist das Problem aufgetreten, je nachdem ob das Programm auf einem 32bit oder 64bit System lief, hatte value dann die Länge von 32bit bzw. 64bit ... blöd, wenn man die Daten von unterschiedlichen Rechnern wieder einlesen will und nicht mehr weiß ob nun 32 oder 64bit.</p>
</blockquote>
<p><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="🙄"
    /> Das hätten wir dir auch gleich sagen können.</p>
<blockquote>
<p>Damit mir das nicht wieder passiert soll in der neuen Version die Länge festgelegt sein ... zB. auf 32bit (64bit). Doch wie mache ich das am elegantesten?</p>
</blockquote>
<p>Mach doch ein menschenlesbares Format <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Alle Probleme gelöst.</p>
<blockquote>
<p>Ich habe mir überlegt, anstelle von sizeof(long) einfach 32 zu schreiben ...</p>
</blockquote>
<p>Narf. sizeof gibt die Größe in char-Größen an, nicht in Bit.</p>
<blockquote>
<p>ich weiß jedoch nicht, ob dann in einem 64bit System die Zahlen auch ordendlich übergeben werden ...</p>
</blockquote>
<p>Nein, würden sie nicht. denn sie sind ja 64-Bit lang, nicht 32.</p>
<blockquote>
<p>Kann man irgendwie festlegen, dass int immer 32bit sind und irgendwie was &quot;long int 64bit&quot;, oder so?</p>
</blockquote>
<p>Dazu benutzt man in der Regel Makefiles &amp; Co oder das was du als nächstes nennst:</p>
<blockquote>
<p>Ich habe von __int32, long long und int32_t gelesen, aber da gab es immer irgendwelche Diskussionen über Standards ... (gcc 4.5 meckert dass long long nicht ISO C++98 standard ist).</p>
</blockquote>
<p>Das ist vollkommen richtig, dass dies nicht Standard ist, aber wenn es funktioniert, wen kümmert es?</p>
<p>Als Alternative für menschenlesbares Format: Es muss ja nicht direkt menschenlesbar sein, du kannst auch Binärdaten speichern. Aber eben nicht als direktes Speicherabbild wie jetzt. Da kannst du dir neben der Länge noch viel mehr Probleme einhandeln (Endianess, Darstellung negativer Zahlen,...). Gib Zahlen in einem Stellenwertsystem zur Basis 255 (maximum von unsigned char) aus. Das kombiniert binäre Kürze mit Portabilität (ist aber nicht mehr menschenlesbar). Der Nachteil ist, dass Ein- und ausgabe mehr CPU-Last beanspruchen, was in der Praxis aber a) keinen Unterschied macht (Festplatte ist Flaschenhals) und b) selbst wenn doch ein Unterschied da ist, egal ist (weil Ein-/Ausgabe in der Regel nur einen Bruchteil der Programmlaufzeit ausmachen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941663</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Aug 2010 16:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 17:01:17 GMT]]></title><description><![CDATA[<p>int32_t/int64_t ist der richtige Weg.<br />
Wenn gcc wegen letzterem meckert, kompilierst du vermutlich mit -pedantic-errors. Dieser Parameter muss weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941665</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 18 Aug 2010 17:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 17:18:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Das hätten wir dir auch gleich sagen können.</p>
</blockquote>
<p>Ja ... hinterher ist man immer 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>
<blockquote>
<p>Mach doch ein menschenlesbares Format <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Alle Probleme gelöst.</p>
</blockquote>
<p>Ja ... ääh ... nein ... denn dann ist 1. der Speicherverbrauch ein bissel zu groß (ich produziere teilweise Gigabyte weise Daten ... das liest dann eh keiner mehr manuell durch) und 2. benötige ich die volle Präzision der Ausgabe damit ich die Rechnung später bei Bedarf fortsetzen kann.</p>
<blockquote>
<p>Narf. sizeof gibt die Größe in char-Größen an, nicht in Bit.</p>
</blockquote>
<p>Stimmt natürlich ... Details ...</p>
<blockquote>
<p>Dazu benutzt man in der Regel Makefiles &amp; Co oder das was du als nächstes nennst</p>
</blockquote>
<p>Äh ... ja ... keine Ahnung ... deswegen frage ich ja <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Wie kann ich das denn in den Makefiles bestimmen?</p>
<p>Der gcc4.5 kann anscheinend nativ mit int32_t und int64_t umgehen. Ich müsste dann aber bei allen wichtigen Deklarationen das ändern ... mühsaaaaam ...</p>
<blockquote>
<p>Als Alternative für menschenlesbares Format: Es muss ja nicht direkt menschenlesbar sein, du kannst auch Binärdaten speichern. Aber eben nicht als direktes Speicherabbild wie jetzt. Da kannst du dir neben der Länge noch viel mehr Probleme einhandeln (Endianess, Darstellung negativer Zahlen,...). Gib Zahlen in einem Stellenwertsystem zur Basis 255 (maximum von unsigned char) aus. Das kombiniert binäre Kürze mit Portabilität (ist aber nicht mehr menschenlesbar). Der Nachteil ist, dass Ein- und ausgabe mehr CPU-Last beanspruchen, was in der Praxis aber a) keinen Unterschied macht (Festplatte ist Flaschenhals) und b) selbst wenn doch ein Unterschied da ist, egal ist (weil Ein-/Ausgabe in der Regel nur einen Bruchteil der Programmlaufzeit ausmachen).</p>
</blockquote>
<p>Kannst du das bitte etwas näher ausführen? Wie gebe ich die Daten zur Basis 255 aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941672</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Wed, 18 Aug 2010 17:18:55 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 18:47:12 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<p>Kannst du das bitte etwas näher ausführen? Wie gebe ich die Daten zur Basis 255 aus?</p>
</blockquote>
<p>Dies hier ist nur ein schneller Hack zu Demonstrationszwecken. Der Einfachheit halber nur mit vorzeichenlosen Ganzzahlen. Falls dies das richtige für dich ist, kann man sich noch mal über Vorzeichen und Fließkommazahlen unterhalten. Der folgende Code nimmt Zahlen und schreibt und liest sie portabel (einzige Voraussetzung: Die Größe eines Bytes ist 8 Bit. Aber ich denke, dies dürftekeine große Einschränkung sein). Das nette an dem Code ist, dass du nicht die ganzen Variablendeklarationen ändern musst, bloß die Ein-/Ausgabe. Die Zahlen dürfen hier jedoch nicht größer als 2 hoch 32 sein. Das heißt deine Zahlen dürfen zwar 64 Bit lang sein, aber nur den 32-Bit Wertebereich benutzen. Ich vermute mal, dass dies hier ohnehin vorliegt, denn sonst würde dein Programm gar nicht portabel laufen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;

using namespace std;

long power_255(unsigned int p)
{
  long result = 1; 
  for (unsigned int i=0; i&lt;p; ++i)
    result *= 255;

  return result;
}

void more_portable_write(unsigned long n, std::ostream &amp;out) // sizeof(long) ist mindesten 32 Bit laut Standard
{
  for (unsigned int i = 4; i &gt; 0; --i)  // Basenumrechnung wie in der Schule
    {
      ldiv_t result = ldiv(n, power_255(i-1));
      out.put(result.quot);
      n = result.rem;
    }
}

unsigned long more_portable_read(std::istream &amp;in)
{
  unsigned long n=0;
  for (unsigned int i = 4; i &gt; 0; --i) // Basenumrechnung rückwärts
    {
      unsigned char ziffer = in.get();
      n += power_255(i-1) * ziffer;
    }  
  return n;
}

int main()
{
  // Schreiben
  {
    unsigned int test[]={0,1,50,12345,1234567890,987654321};
    ofstream out(&quot;test.dat&quot;);
    for(int i=0; i&lt;6; ++i)
      {
        more_portable_write(test[i], out);
      }
  }

  // Lesen
  {
    unsigned int test[6]={};
    ifstream in(&quot;test.dat&quot;);
    for(int i=0; i&lt;6; ++i)
      {
        test[i] = more_portable_read(in);
        cout &lt;&lt; i+1 &lt;&lt; &quot;. gelesener Wert: &quot;&lt;&lt;test[i]&lt;&lt;endl;
      }
  }
}
</code></pre>
<p>Die erzeugte Binärdatei sieht im Hexeditor so aus:</p>
<pre><code>00 00 00 00 00 00 00 01 00 00 00 32 00 00 30 69 4A 74 0C B4 3B 8F D6 33
</code></pre>
<p>24 Bytes, wie man es von 6 32-Bit Zahlen erwartet, aber überall lesbar.</p>
<p>Das ist wie gesagt ein schneller Hack, so völlig ohne Sicherheits- und Konsistenzprüfungen würde ich das nicht einsetzen. aber es gibt dir ein Gefühl dafür was ich meine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941706</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Aug 2010 18:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 19:46:29 GMT]]></title><description><![CDATA[<p>Um Himmels willen, warum denn Basis 255 und nicht 256?<br />
Mit Basis 256 hat man keine Performanzprobleme und der Wertebereich wird auch nicht künstlich eingeschränkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941726</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 18 Aug 2010 19:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 20:22:06 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Um Himmels willen, warum denn Basis 255 und nicht 256?<br />
Mit Basis 256 hat man keine Performanzprobleme und der Wertebereich wird auch nicht künstlich eingeschränkt.</p>
</blockquote>
<p>Ähh, weil ich mich verrechnet habe :p . Ja, 256 sollte es natürlich sein. Entsprechend natürlich auch in dem Beispielprogramm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941756</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Aug 2010 20:22:06 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Wed, 18 Aug 2010 21:16:04 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<p>Damit mir das nicht wieder passiert soll in der neuen Version die Länge festgelegt sein ... zB. auf 32bit (64bit). Doch wie mache ich das am elegantesten?</p>
</blockquote>
<p>Du könntest immer ein 32-Bit Programm bauen, dann sind die int immer gleich lang. Da du wohl gcc verwendest: -m32 angeben. Es müssen natürlich die 32Bit-Version des gcc und alle benötigten Bibliotheken installiert werden.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941773</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 18 Aug 2010 21:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Thu, 19 Aug 2010 09:31:09 GMT]]></title><description><![CDATA[<blockquote>
<p>// Basenumrechnung wie in der Schule</p>
</blockquote>
<p>Ja ... da war mal was ... lang lang ist's her ...</p>
<p>Aber das ganze 'auf Basis 256 umrechnen' funktioniert doch nur für ganze Zahlen. Für Fließkommazahlen sehe ich es jetzt nicht, wie man das übertragen kann.</p>
<blockquote>
<p>// sizeof(long) ist mindesten 32 Bit laut Standard</p>
</blockquote>
<p>Mal ne blöde Frage ... nur zur Sicherheit: ein &quot;int&quot; ist immer 32bit lang, egal ob nun 32bit oder 64bit System, richtig? &quot;long&quot; ist jedoch Systemabhängig. Wie sieht es dann mit &quot;long long&quot; aus?</p>
<p>Mich dünkt ich hätte mal irgendwo gelesen, dass &quot;int&quot; auch mal nur 16bit lang war.</p>
<p>Und wenn wir gerade dabei sind, was ist mit &quot;float&quot; und &quot;double&quot;? Sind die immer 32bit bzw. 64bit lang?</p>
<p>Gruß,<br />
HarryKane</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941917</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 19 Aug 2010 09:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Thu, 19 Aug 2010 10:08:22 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<blockquote>
<p>// Basenumrechnung wie in der Schule</p>
</blockquote>
<p>Ja ... da war mal was ... lang lang ist's her ...</p>
<p>Aber das ganze 'auf Basis 256 umrechnen' funktioniert doch nur für ganze Zahlen. Für Fließkommazahlen sehe ich es jetzt nicht, wie man das übertragen kann.</p>
</blockquote>
<p>0,5 = 5*10^(-1) wobei hier mit ^ &quot;hoch&quot; gemeint sein soll. Aber es bietet sich eher an, bei Fließkommazahlen Mantisse und Exponent getrennt zu speichern.</p>
<blockquote>
<blockquote>
<p>// sizeof(long) ist mindesten 32 Bit laut Standard</p>
</blockquote>
<p>Mal ne blöde Frage ... nur zur Sicherheit: ein &quot;int&quot; ist immer 32bit lang, egal ob nun 32bit oder 64bit System, richtig? &quot;long&quot; ist jedoch Systemabhängig. Wie sieht es dann mit &quot;long long&quot; aus?</p>
</blockquote>
<p>Alles für signed und unsigned gleichermaßen:<br />
char: Mindestens 8 Bit (in der Regel auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /><br />
short: Mindestens 16 (sind in der Regel auch 16)<br />
int: Mindestens 16 (sind in der Regel meist 32)<br />
long: Mindestens 32 (typischerweise 32 bei 32-Bit Code, 64 bei 64-Bit Code)<br />
long long (kein Standard C++): Mindestens 64 Bit nach C99, ist auch typischer Wert</p>
<blockquote>
<p>Mich dünkt ich hätte mal irgendwo gelesen, dass &quot;int&quot; auch mal nur 16bit lang war.</p>
</blockquote>
<p>Richtig. Siehe oben. In der Praxis aber nur bei 16-Bit Code (d.h. Code von vor ca. 1995) der Fall.</p>
<blockquote>
<p>Und wenn wir gerade dabei sind, was ist mit &quot;float&quot; und &quot;double&quot;? Sind die immer 32bit bzw. 64bit lang?</p>
</blockquote>
<p>In C++ gar nicht definiert (außer das Wertebereich float&lt;=double&lt;=long double), in C99 gibt es wiederum Mindestwerte, die auch für die meisten C++-Compiler gelten (müssen sie aber nicht!), aber das kannst du dir auch selbst zusammensuchen (Stichwort: float.h).<br />
Aber typische Werte sind 32, 64 und 64/128 Bit für float, double und long double.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941928</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 19 Aug 2010 10:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Thu, 19 Aug 2010 10:33:08 GMT]]></title><description><![CDATA[<p>[quote=&quot;harrykane&quot;]</p>
<blockquote>
<blockquote>
<p>// sizeof(long) ist mindesten 32 Bit laut Standard</p>
</blockquote>
<p>Mal ne blöde Frage ... nur zur Sicherheit: ein &quot;int&quot; ist immer 32bit lang, egal ob nun 32bit oder 64bit System, richtig? &quot;long&quot; ist jedoch Systemabhängig. Wie sieht es dann mit &quot;long long&quot; aus?</p>
<p>Mich dünkt ich hätte mal irgendwo gelesen, dass &quot;int&quot; auch mal nur 16bit lang war.</p>
<p>Und wenn wir gerade dabei sind, was ist mit &quot;float&quot; und &quot;double&quot;? Sind die immer 32bit bzw. 64bit lang?</p>
<p>Gruß,<br />
HarryKane</p>
</blockquote>
<p>Dir ist aber klar, dass du, wenn du wirklich kompatibel sein willst, nicht nur die Länge sondern auch die Byteorder berücksichtigen musst?</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941935</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 19 Aug 2010 10:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit bzw. 64bit Zahlen on Thu, 19 Aug 2010 11:04:14 GMT]]></title><description><![CDATA[<p>Die Länge der Datentypen war schon immer compilerabhängig und nie einheitlich genormt. Der jeweils gültige Wertebereich sollte in der Doku des Compilers klar beschrieben sein. Die Längenangaben in bit oder byte haben sich nicht durchgesetzt. In C/C++ bleiben unsigned, short, double, long double oder ohne Zusatz bequemer. Was früher 8- oder 16-bit war kann heute 32- oder 64-bit sein, morgen vielleicht 128-bit. Der Speicherbedarf spielt nur noch eine untergordnete Rolle. Man hat ja genug Speicher und die Performance regeln die immer schneller werdenden Prozessoren!</p>
<p>Die Frage ist also nur für Optimierungen interessant oder falls einmal die Grenzen der Wertebereiche tatsächlich nicht ausreichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941949</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Thu, 19 Aug 2010 11:04:14 GMT</pubDate></item></channel></rss>