Ist unsigned long int für diesen Vorgang korrekt?
Hier ist mein Code:
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned long int x = 0;
// trying to make x = 2,147,483,648
x = 1 << 31;
printf("%lu", x);
}
Es wird x = 18446744071562067968 zurückgegeben. Ich habe gelesen, dass das vorzeichenlose lange int auf 4.294.967.296 steigen sollte. Warum kann ich also nicht 1 << 32 verwenden, um x auf 2.147.483.648 zu setzen?