Wie groß ist ein long?
-
#include <iostream> using namespace std; int main() { cout<<INT_MIN<<endl; cout<<LONG_MIN<<endl; cout<<INT_MAX<<endl; cout<<LONG_MAX<<endl; }
folgendes Programm liefert mir das eine Integer den gleichen Wertebereich wie eine Long hat - gilt das nur für 32 Bit basierende Systeme? hab irgendwo gelesen das ein 16 Bit System 2 Bytes für eine Integer bereit stellt und 4 Bytes für einen Long...
unter einer anderen Quelle habe ich gelesen ein Long wäre 64 Bit groß...
wie definiert das der Standard?
-
kommt auf den Compiler an
-
ein long ist auch nur 32 Bit groß und ich kenn nur für 16 Bit den Typ __int16, also ein short
-
läßt der Standard die Entscheidung über die größe eines Wertebereichs eines elementaten Datentyps beim Compilerhersteller?
ich dachte da gibt es irgendwelche regeln...
-
Keine, die die Größe exakt festlegen.
-
ich glaub nur char ist festgelegt mit 1 Byte und die anderen Werte sind vielfache von char
-
Doch, es gibt schon Regeln. Aber keine konkrete Größenangaben. Im nächsten C++ Standard werden aber hoffentlich die stdint.h-Typen aus C99 übernommen. Ansonsten findet man die zZ. auch in Boost als boost/cstdint.hpp
-
Soweit ich weis legt der Standard folgendes fest:
sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long) sizeof(char)==1
Allerdings wird nicht gesagt, dass sizeof(char) gleich ein Byte ist.
-
@Ben04
doch, dass es ein Byte ist ist schon festgelegt. Nur wie viele Bits das Byte haben muss, ist nicht genau festgelegt.Ein Byte muss nur so groß sein, dass der Grundzeichensatz unterstützt wird.
-
ich weiß garnicht, warum hier noch jemand einen long benutzt...
Nehmt double, und ihr habt keine probleme...
im grunde genommen braucht man nur double und int, mehr nicht...
ps.: Damit meine ich natürlich für zahlen, für buchstaben braucht man natürlich noch char oder string, je nachdem wie einem beliebt
-
@Freshman22
äh, da hast du was falsch verstanden. Außerdem ist die Größe von int und double auch nicht festgelegt.guten morgen