У меня странная проблема. Вот ссылка на код, над которым я работаю, с вводом и выводом. Откроется фрагмент, на котором у меня проблема.
printf("before modulo r= %d ,ans =%d\n",r/b,ans );
ans=(ans)%2;
printf("after modulo r = %d ,ans =%d\n",r,ans);
Можно видеть, что во второй итерации перед выполнением строки 24 ans = 0, после этого она становится 1 вместо остатка 0 как 0% 2 = 0. Я действительно не могу понять проблему
Ваша первая печать не печатает as, так как ваш b длинный long int, поэтому r/b - длинный длинный int, который имеет 64 бита, а первая печать будет печатать первые 32 бит как r и следующие 32 бит как ан. Для начала вам никогда не будет 0.
Пожалуйста, в следующий раз отправьте свой код, а не свяжите его.
%d
на%lld
или%lld
(int)(r/b)
. При использованииprintf
тип аргумента (после продвижения по умолчанию) должен соответствовать спецификатору, в противном случае поведение не определено.