Почему порядок строк так важен?

Только приступил к изучению C (опыт в программировании мал), попалась такая задача: Необходимо переключить 3 и 0 биты переменной bits. Результат сохраните в байтовой беззнаковой переменной res и выведите ее значение в консоль в виде целого десятичного числа. Моя программа выглядит таким образом:

#include <stdio.h>

int main(void)
{
    unsigned char bits;
    unsigned char mask = 0b1001;
    scanf("%hhd", &bits);
    printf("%u", mask ^ bits);
    return 0;
}

Но по сути всегда выводится значение bits, а не mask ^ bits. Но если строчку scanf("%hhd", &bits); поменять местами с unsigned char mask = 0b1001;, то все будет работать. Либо я чего-то не понимаю, либо что-то не так с компилятором (хотя трудно себе это представить). Кстати, стандарт языка C99, и компилятор MinGW32. Вдруг, это важно.. Кстати, на самом Stepik`е все работает во обеих вариациях.


Ответы (0 шт):