Сдвиг битов для печати битов, изменяющих int в C?

MikeR спросил: 13 октября 2017 в 07:09 в: c

Я просто пытаюсь распечатать биты целого числа, и похоже, что int каким-то образом изменяется в процессе, но также кажется, что он меняется между вызовами, а не в середине функции .Моя функция:

void printBits(int bits){
    int i = 0;
    printf("BEFORE: %u\n", bits);    while(i < 32){
        printf("%d", 1 & (bits >> i));
        i++;
    }
    printf("\n");
    printf("AFTER: %u\n", bits);
}

В моем main она вызывается здесь, а затем программа завершается (primes [0] - это просто используемый int):

printf("\nBEFORE PRINTBIT: %u\n", primes[0]);
printBits(primes[0]);
printBits(primes[0]);
printf("AFTER PRINTBITS: %u\n", primes[0]);

и вывод:

BEFORE PRINTBITS: 3450182216
BEFORE: 3450182216
00010010010110011010010110110011
AFTER: 3450182216
BEFORE: 2900726784
00000000001010011010011100110101
AFTER: 2900726784
AFTER PRINTBITS: 2900726784

Между вызовами printBits ничего не вызывается, и насколько я могу судить, printBits не влияет на int. Но как-то все меняется. Любые идеи о том, почему это происходит и как я могу это остановить?


0 ответов