int und long sind gleich!?

Karl007

Grünschnabel
Hallo alle zusammen,

ich habe vor kurzem angefangen mich ein wenig mit c++ zu beschäftigen und habe mir das Buch "C++ Einführung und Professionelle Programmierung" von Ulrich Breymann bestellt.

Darin ist die aussage, dass wenn ich über meinen int Wert hinaus schieße, irgend ein anderes komisches Ergebnis rauskommt. Das war aber bei mir nicht der fall.

Ich habe mir dann von dem limits Header die INT_MAX sowie LONG_MAX ausgeben lassen und beides war identisch.

Wie kann sowas sein?

Entwicklungsumgebung habe ich Eclipse undals Compiler MinGW-5.1.4

Viel Grüße
 
Weil 'long' doppelt so 'groß' ist wie 'int'(per definition)

Nämlich:

int: 2 Byte/ -32768 - +32767 == 16 Bit
long: 4 Byte/ -2147483648 - +2147483647 == 32 Bit

Allerdings gilt das nur unter einer Bedingung: nämlich dass du C benutzt.
Du nutzt aber C++.

Da ist int schon auf 32 Bit angewachsen ;D

Das int was du suchst nennst sich in C++ short int, obgleich stark davon abzuraten ist es zu nutzen.

Quelle: http://www.datasource.de/programmierung/tab33_cppdatentypen.html

Advice: http://lmgtfy.com/?q=c+++datentypen
 
Zuletzt bearbeitet:
Definition weiterlesen! Bei Compiler für 32-bit Rechnern und mehr ist int ebenfalls 32 bit lang.

Nach deinem Denken müsste man dann noch meckern warum int auf 8 / 16-bit Compilern mit einer Länge von 16 bit genau so lang ist wie ein short, der auch 16 bit hat ;)

Einfach annehmen und mit arbeiten :p
 
sry... hab mehr mit C# zu tun :-( Da haben die alle Eindeutige Namen(Int16, Int32 usw)

Es gibt noch 8/16 Bit Compiler?!
 
Cool also ist auf gut deutsch das Buch an der stelle Schlicht falsch, bzw. nicht Situationsgerecht und ein int ist in c++ genau dasselbe wie ein long?!

Danke für die schnelle Antwort :)
 
Weil 'long' doppelt so 'groß' ist wie 'int'(per definition)
Welche Definition denn? Die von dir verlinkte Seite gibt bestenfalls die tatsächlichen Größen für einen bestimmten Compiler an. Verlassen kann man sich auf diese Werte in der Regel nicht. Vom C++-Standard vorgeschrieben ist nur, dass folgende Beziehungen gelten:
Code:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Insbesondere ist es also auch möglich, dass ein long ebenso lang ist wie ein int.

Grüße, Matthias
 
http://homepage.univie.ac.at/heinz.kabelka/edv-ueb/variabl.htm

und ich glaube kaum das DATENTYPEN Compileranbhängig sind, Sie mögen vor 30 Jahren Systemabhängig gewesen sein, aber bestimmt nicht Compilerabhängig.

Wonach short und int im übrigen sehr wohl gleich lang sind.

=====================

C++:

http://www.cplusplus.com/doc/tutorial/variables/


Und komischerweise finde ich nicht EINE EINZIGE Angabe die mir die variablengrößen anders darlegt, so habe ich die Längen in meiner Ausbildung(6 Monate her) auch gelernt. Zeig mir doch mal bitte wo es anders definiert ist.


Selbst Wikipedia zeigt es: http://en.wikipedia.org/wiki/C_data_types#Signedness
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Wer? Ich?

Vergiss doch die Links ^ ^
Kanns noch ein zum Sammeln haben:
http://home.att.net/~jackklein/c/inttypes.html#int hat gesagt.:
On compilers for 32 bit and larger processors (including Intel x86 processors executing in 32 bit mode, such as Win32 or Linux) an int is usually 32 bits long and has exactly the same representation as a long.

Und deiner zu Wikipedia sagt:
The most natural size of integer for the machine; typically a whole 16, 32 or 64-bit(2, 4, or 8 bytes respectively) addressable word.

Was ebenfalls bestätigt, dass es üblicherweise Compilerabhängig ist, denn der Compiler hängt von der Maschine ab und der nutzt diese auch voll aus (bis zu 16, 32, 64-bit) wie dort steht.

Am Ende nutzt das ganze "Gebrabbel" im Internet nichts, da es viele male didaktisch reduziert wurde. Daher gebe ich nunmehr Matthias Reitinger recht.

Den C++ ISO 14882 Standard habe ich quer gelesen und dieser Verweist auf ISO/IEC 9899, welcher den C-Standard beschreibt. Ich denke daher kommen die vielen Missverständnisse. Leider komm ich an den ISO/IEC 9899 z.Zt. nicht dran.

EDIT: Ab hier geht das Trolling los glaube ich :p
 
Zuletzt bearbeitet:
Zurück