Сокращенный С++ if else statement
Итак, мне просто интересно, есть ли короткая инструкция:
if(number < 0 )
bigInt.sign = 0;
else
bigInt.sign = 1;
Я вижу все эти короткие инструкции, если a < b и т.д.
Я не уверен, как это сделать правильно, и хотел бы, чтобы этот ввод был введен.
Спасибо!
Я на самом деле просто вычислил это прямо перед тем, как вы, ребята, ответили.
Я использую bigInt.sign = (number < 0) ? 1 : 0
Ответы
Ответ 1
Да:
bigInt.sign = !(number < 0);
Оператор !
всегда оценивается как true
или false
. При преобразовании в int
они становятся 1
и 0
соответственно.
Конечно, это эквивалентно:
bigInt.sign = (number >= 0);
Здесь круглые скобки излишни, но я добавлю их для ясности. Все операторы сравнения и сравнения оценивают как true
или false
.
Ответ 2
попробуйте следующее:
bigInt.sign = number < 0 ? 0 : 1
Ответ 3
Основной синтаксис использования троичного оператора таков:
(condition) ? (if_true) : (if_false)
Для вашего случая:
number < 0 ? bigInt.sign = 0:bigInt.sign = 1;
Ответ 4
В зависимости от того, как часто вы используете это в своем коде, вы можете рассмотреть следующее:
макро
#define SIGN(x) ( (x) >= 0 )
Встроенная функция
inline int sign(int x)
{
return x >= 0;
}
Тогда вы бы просто пошли:
bigInt.sign = sign(number);