Consider following example:
#include <stdio.h>
#include <inttypes.h>
struct A {
uint32_t i1;
uint32_t i2;
uint32_t i3;
uint64_t i4;
uint32_t i5;
uint32_t i6;
uint32_t i7;
uint64_t i8;
uint32_t i9;
};
struct B {
uint32_t i1;
uint32_t i2;
uint32_t i3;
uint32_t i4;
uint32_t i5;
uint32_t i6;
uint32_t i7;
uint64_t i8;
uint64_t i9;
};
int
main()
{
struct A a;
struct B b;
printf("sizeof(a) = %u, sizeof(b) = %u\n", sizeof(a), sizeof(b));
return 0;
}
Output is:
$ ./t2
sizeof(a) = 56, sizeof(b) = 48
$
Why are they differ on 64bit machine ? On 32 bit platform results are the same:
$ ./t2
sizeof(a) = 44, sizeof(b) = 44
So, the sizeof(int) simply implies the value of size of an integer. Whether it is a 32-bit Machine or 64-bit machine, sizeof(int) will always return a value 4 as the size of an integer.
Some properties of the unsigned long long int data type are: An unsigned data type stores only positive values. It takes a size of 64 bits. A maximum integer value that can be stored in an unsigned long long int data type is 18, 446, 744, 073, 709, 551, 615, around 264 – 1(but is compiler dependent).
LLP64 or 4/4/8 ( int and long are 32-bit, pointer is 64-bit)
Some diagrams to help you see:
32-bit:
+----+----+----+----+----+----+----+----+----+----+----+
| i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 | i9 | Struct A
+----+----+----+----+----+----+----+----+----+----+----+
+----+----+----+----+----+----+----+----+----+----+----+
| i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 | i9 | Struct B
+----+----+----+----+----+----+----+----+----+----+----+
64-bit:
+---------+---------+---------+---------+---------+---------+---------+
| i1 | i2 | i3 |~~~~| i4 | i5 | i6 | i7 |~~~~| i8 | i9 |~~~~| Struct A
+---------+---------+---------+---------+---------+---------+---------+
+---------+---------+---------+---------+---------+---------+
| i1 | i2 | i3 | i4 | i5 | i6 | i7 |~~~~| i8 | i9 | Struct B
+---------+---------+---------+---------+---------+---------+
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With