By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,162 Members | 1,077 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,162 IT Pros & Developers. It's quick & easy.

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

P: n/a
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 ?
Aug 10 '05 #1
Share this Question
Share on Google+
7 Replies


P: n/a
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.

Aug 10 '05 #2

P: n/a
ra************@gmail.com 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

--
Nick keighley

Aug 10 '05 #3

P: n/a

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

Aug 10 '05 #4

P: n/a

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

Aug 10 '05 #5

P: n/a

msalters wrote:
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.

Aug 10 '05 #6

P: n/a
Maxim Yegorushkin wrote:
msalters wrote:

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.


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

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Aug 10 '05 #7

P: n/a

Pete Becker wrote:

[]
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>.


Understood.

Aug 10 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.