Мой компилятор C выдавал предупреждение при использовании унарного минуса для значения unsigned
, поэтому я исправил предупреждение, выполнив вместо этого вычитание из 0.
Теперь мне интересно, эквивалентен ли текущий код исходному:
uint32_t a, b; // assume b is initialized and non-zero
a = -b % b; // old code
a = (0-b) % b; // current code
Мой вопрос: для тех же значений b
будут ли обе строки кода давать одинаковый результат для a
?