Mam prostą rzecz do policzenia:
#include <iostream>
unsigned int i = 5;
uint64_t c;
int main() {
c = 1 << (i + 32);
std::cout << c;
return 0;
}
Wynik powinien wynosić 137438953472, czyli 2^37, natomiast dostaję wynik 32. Nie ma to dla mnie żadnego sensu. Co się dzieje w tym kodzie?
Ponadto jak wpiszę:
c = 1 << 37;
To dostaję 0. Przesunięcia bitowe działają inaczej w c++ niż przesunięcia bitowe?