Mam przykładowy program
#include <stdio.h>
#include <stdint.h>
int main()
{
uint64_t x = (uint64_t)1 << 31;
uint64_t y = (uint64_t)(1 << 31);
uint64_t z = 1 << 31;
printf("%lli\n%lli\n%lli\n", x, y, z);
return 0;
}
Po uruchomieniu dostaję wynik:
2147483648
-2147483648
-2147483648
Może mi ktoś wyjaśnić dlaczego te trzy zmienne nie mają takiej samej wartości?