Как сказал schnaader , вы можете столкнуться с проблемой переполнения.
Но, отвечая на ваш вопрос printf
о выводе беззнаковых значений, вам нужен модификатор u
(для "без знака"). В этом случае, как указывает Дженс ниже, вы хотите %hu
:
printf("a: %hu\n", a);
... хотя просто %u
(unsigned int
, а не unsigned short
), вероятно, также будет работать, потому что short
будет повышен до int
, когда он будет помещен в стек для printf
.
Но опять же, это только в том случае, если значение 70000 будет соответствовать unsigned short
на вашей платформе.