0
Does the size of various datatypes in C depend on the compiler?
C programming language
7 Respuestas
+ 3
Calvin Thomas Well, besides the integral types, there are only float and double (and long double). They also have minimal size requirements, as well as the restriction that a double has to be able to represent all float values, and a long double in turn has to be at least as precise as a double. See the table at the end:
https://en.cppreference.com/w/c/language/arithmetic_types
But I think those are also only minimal guarantees, i.e. they may be wider:
https://stackoverflow.com/questions/25524355/what-is-the-size-of-float-and-double-in-c-and-c
Not taking into account any floating point norms like IEEE-754 which usual implementations will likely conform to (see also first link). In such a case, you would have more certainty of their properties.
+ 7
Yes, it depends on the compiler, which will try to find the best combination for your platform (architecture + OS). That is why C and C++ have a sizeof() operator to determine the size of a data type.
The standard itself does not make many assumptions about the size of integral data types, it only specifies the following:
1 == sizeof( char ) <= sizeof( short ) <= sizeof( int ) <= sizeof( long )
As well as a minimal range of values each type needs to be able to store.
In particular, it is not even guaranteed char is actually 8 bit wide, which is why the macro CHAR_BIT exists. All of these loose rules make it possible to implement C on a variety of platforms.
More details:
https://stackoverflow.com/questions/13764892/what-determines-the-size-of-integer-in-c
https://stackoverflow.com/questions/2331751/does-the-size-of-an-int-depend-on-the-compiler-and-or-processor
https://stackoverflow.com/questions/35844586/can-i-assume-the-size-of-long-int-is-always-4-bytes
+ 1
Shadow and Martin Taylor Thanks.
0
Shadow Does this apply to all the primitive data types in C?
0
Yes,it depends on compiler