Спецификатор scanf
%x
читает шестнадцатеричное целое число, которое (и это ключевая точка) , необязательно, перед 0x или 0X !(См. здесь .)
Ваш второй пример не дает фактического значения x
(или, возможно, дает ноль для пустого ввода после 0x
)!Попробуйте использовать, скажем, 1F
и 0F
в качестве входных тестов.
PS: значение 32765
выглядит подозрительно как телефонное преобразование из -1
.