Is there is any strong reason not to use standard native C++ data types

A

Abhishek Saksena

Hi all,
Is there is any strong reason not to use standard C++ native datatypes.
The only reason I can imagine is protability issuse on different
machines.But did C++ not gurantee portaibilty of standard native datatypes ?
 
R

ravinderthakur

hi abhishek,


no!!!

c++ dosn't gurantee the size of the native data types.
it only makes some very weak statements such as the size of int should
be greater than
or equal to short but never makes exact statement about the size.

thanks
rt.
 
N

Nick Keighley

(e-mail address removed) wrote:

please leave some context. The question is if C++ guarantees the
sizes of native data types
no!!!

c++ dosn't gurantee the size of the native data types.
it only makes some very weak statements such as the size of int should
be greater than
or equal to short but never makes exact statement about the size.

it does, however, specify a minimum size. A char is at least 8 bits, an
at leat 16 bits and a long at least 32 bits. There are similar promises
for floating point types. Unsigned are the same size as their
corresponding signed types
 
M

Maxim Yegorushkin

Nick Keighley wrote:

[]
it does, however, specify a minimum size. A char is at least 8 bits, an
at leat 16 bits and a long at least 32 bits. There are similar promises
for floating point types. Unsigned are the same size as their
corresponding signed types

It does not.

It only states that:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

And that "Plain ints have the natural size suggested by the
architecture of the execution environment".

Refer to §3.9.1/2
 
M

msalters

Maxim Yegorushkin schreef:
Nick Keighley wrote:

[]
it does, however, specify a minimum size. A char is at least 8 bits, an
at leat 16 bits and a long at least 32 bits. There are similar promises
for floating point types. Unsigned are the same size as their
corresponding signed types

It does not.

It only states that:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

It also states that these must be implemnted in some kind of binary
system, and that the ranges are at least (-127,127), (-32767,32767)
and so on. (by reference from C90)
Those ranges imply additional minimum sizes, as Nick correctly noted.

HTH,
Michiel Salters
 
M

Maxim Yegorushkin

msalters said:
Maxim Yegorushkin schreef:
Nick Keighley wrote:

[]
it does, however, specify a minimum size. A char is at least 8 bits, an
at leat 16 bits and a long at least 32 bits. There are similar promises
for floating point types. Unsigned are the same size as their
corresponding signed types

It does not.

It only states that:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

It also states that these must be implemnted in some kind of binary
system, and that the ranges are at least (-127,127), (-32767,32767)
and so on. (by reference from C90)

C++ standard does not state that. C does indeed.

However, Derek M. Jones in his book "The New C Standard" quotes:

Resolutions Prepared at the Eleventh Plenary Meeting of
ISO/IEC JTC 1/SC22 Snekkersten, Denmark
August 24 27, 1998
Resolution 98-6: Relationship Between the Work of WG21 and that of WG14
Recognizing that the user communities of the C and C++ languages are
becoming increasingly divergent, ISO/IEC JTC 1/SC22 authorizes WG21 to
carry out future revisions of ISO/IEC 14882:1998 (Programming Language
C++) without necessarily adopting new C language features contained in
the current revision to ISO/IEC 9899:1990 (Programming Language C) or
any future revisions thereof.
ISO/IEC JTC 1/SC22 encourages WG14 and WG21 to continue their close
cooperation in the future.
 
P

Pete Becker

Maxim said:
C++ standard does not state that. C does indeed.

C90 imposes those minimum ranges through the requirements on CHAR_MIN,
etc. as specified in <limits.h>. C++ incorporates those requirements
through <climits>.
 
M

Maxim Yegorushkin

Pete Becker wrote:

[]
C90 imposes those minimum ranges through the requirements on CHAR_MIN,
etc. as specified in <limits.h>. C++ incorporates those requirements
through <climits>.

Understood.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top