#c
Всем привет. Столкнулся с какой-то абсолютно мистической проблемой. Есть код на Си: int main(int argc, char const *argv[]) { unsigned int a, A = 0; unsigned short tmp = 0; scanf("%u", &a); // вводим значение, будем считать, что 3 //a = 3; for (int i = 0; i < a; i++) { printf("--%u\n", a); // a == 3 scanf("%u", &tmp); printf("--%u\n", a); // внезапно а == 0 A |= 1 << tmp; } return 0; } Примечание: Если раскомментировать строку //a = 3 и убрать первый scanf, все адекватно работает. Надеюсь, из комментариев в коде все понятно. Переменная a в цикле каким-то магическим образом меняет свое значение после строки scanf("%u", &tmp); Ломаю голову уже часов 5, поэтому прибежал к вам. В чем вообще тут проблема может скрываться?
Ответы
Ответ 1
Попробуйте написать не scanf("%u", &tmp);, а scanf("%hu", &tmp);: у вас же short int, а не int...
Комментариев нет:
Отправить комментарий