I have really simple question that comes from wierd compiler behaviour.
A variable of type unsigned long long is 64 bit length, but if I store a value bigger than 32 bit compiler reports a warning and then code doesn't work. Here an example:
The sizeof() operator works on static information. We could argue that the compiler should be smarter, but what you are testing is the same as saying sizeof(1), which for the native machine size for an int is four bytes, or 32 bits.
Make sure you start with the proper size object: 1LL << 34