Тема: Оператор % повертає від'ємні значення
Я так давно не використовував %, що зовсім забув як він працює.
І вот тепер довелося його використати.
Я думав, що він, як звичайний mod, даватиме значення з діапазону [0, d) (для v % d), а він вернув від'ємні числа.
Джерело : microsoft docs C# operator %
Питання :
Звідки ростуть ноги в цієї проблеми ?
Невже в компанії крихітномяких розробкою C# займалися люди які клали болт на таке неподобство ?
Намагався щось знайти по цій темі.. Дехто каже, що це із-за того, що процесори так реалізують цю операцію, відповідно і в асемблері вона так працює.. Але де C#, а де Assembler.. Короче в мене горить пердак від такої реалізації. Сподіваюсь, що тут є люди, яким буде не лінь пояснити, чого % працює саме так.
upd:
На всякий випадок, уточню: проблемане не в тому, що % вертає від'ємні значення, а в тому, що % вертає значення з діапазону (-d, d). А повинен би був вертати з [0, d).