Я ищу краткий способ взять знак (положительность или отрицательность) числа и перенести его на другое число.
Например:
Нам даны два числа, первое - целое число 1, второе неизвестно до времени выполнения.
Если неизвестное число меньше 0, наше число становится -1.
Если неизвестное число больше или равно 0, наше число становится равным 1.
Если наше неизвестное число X:
![enter image description here](https://i.stack.imgur.com/Azjrr.png)
как код:
int before = AnyNonzeroInt(); //for this example we will choose 1.
int X = rand(Int32.Min, Int32.Max);
int after = ...
Я лично использую C # 4.5, но я считаю, что хорошее решение было бы довольно независимым от языка.
Я могу придумать несколько способов сделать это, но все они включают операторы if-else-case или троичные операторы. Я хотел бы математический способ сделать это.
редактирует:
У меня нет отвращения к троичным операторам. Тем не менее, кодовая база, над которой я работаю, имеет набор рекомендаций по коду, троичные операторы не допускаются, так как они, как считается, делают код более сложным (я знаю, что знаю. Я не сделал это правило).
Однако я верю, что приму этот вопрос и ответы на него на следующем собрании группы, чтобы показать, насколько необходимо, по моему мнению, троичные операторы.