2017-02-11 7 views
-5

Как вы преобразовываете число в его знак (например, -50 = -1, 50 = 1) без использования оператора if, только математических операций?Как вы преобразовываете число в свой знак?

+0

не знаковый бит смотреть? –

+1

Возможный дубликат [Есть ли стандартная функция знака (signum, sgn) в C/C++?] (Http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn -in-cc) –

+0

Непрошеный, но вы пробовали '1 | (n & (1 << (sizeof (n) * 8) - 1)) '? Я оставлю это вам, чтобы понять, что все это делает. – Qix

ответ

2

Почему бы просто не сделать это

int sign = i<=0 ? -1 : 1; 
+1

Почему бы и нет? У него есть ветка ... см. (От обмана): http://stackoverflow.com/a/1903975/327083 –

+1

Ничего в этом * вопросе не упоминалось о ветке, просто чтобы он не использовал оператор 'if' :-) Этот ответ неверен для совершенно * разной * причины: ноль - это * не * отрицательный. – paxdiablo

+1

Спасибо - в моем ответе нет, если в нем. На самом деле у него нет f, но есть извините за использование гласного –

Смежные вопросы