Я наткнулся на интригующий C-код, который печатает A + B
, но мне трудно понять его.
Формат ввода:
A B
где A
, B
- целые числа от 0
до 10
разделенные одним пространством.
Код:
main( n )
{
gets( &n );
printf("%d", n % 85 - 43);
}
Это предназначено для короткого кодирования, пожалуйста, не обращайте внимания на предупреждения.
Насколько я понимаю до сих пор:
gets( &n )
сохраняет значения ASCII A, пробела и B в нижних трех байтах n
. Например, A = 3
и B = 8
дают n = 0x00382033
. Приведенные условия предотвращают переполнение n
. Но я не понимаю, как n % 85 - 43
дает A + B
Как вы можете найти эти цифры?