Всем привет. Столкнулся с какой-то абсолютно мистической проблемой.
Есть код на Си:
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
", a); // a == 3
scanf("%u", &tmp);
printf("--%u
", a); // внезапно а == 0
A |= 1 << tmp;
}
return 0;
}
Примечание: Если раскомментировать строку //a = 3 и убрать первый scanf, все адекватно работает.
Надеюсь, из комментариев в коде все понятно. Переменная a в цикле каким-то магическим образом меняет свое значение после строки scanf("%u", &tmp);
Ломаю голову уже часов 5, поэтому прибежал к вам. В чем вообще тут проблема может скрываться?
Ответ
Попробуйте написать не scanf("%u", &tmp);, а scanf("%hu", &tmp);: у вас же short int, а не int...
Комментариев нет:
Отправить комментарий