I have a question.
uint64_t var = 1; // this is 000000...00001 right?
And in my code this works:
var ^ (1 << 43)
A portable way to have a unit64_t constant is to use UINT64_C macro (from stdint.h):
UINT64_C(1) << 43
Most likely UINT64_C(c) is defined to something like c ## ULL.
From the C standard:
The macro
INTN_C(value)shall expand to an integer constant expression corresponding to the typeint_leastN_t. The macroUINTN_C(value)shall expand to an integer constant expression corresponding to the typeuint_leastN_t. For example, ifuint_least64_tis a name for the typeunsigned long long int, thenUINT64_C(0x123)might expand to the integer constant0x123ULL.