Подтвердить что ты не робот

Сокращенный С++ if else statement

Итак, мне просто интересно, есть ли короткая инструкция:

if(number < 0 )
  bigInt.sign = 0;
else
  bigInt.sign = 1;

Я вижу все эти короткие инструкции, если a < b и т.д.

Я не уверен, как это сделать правильно, и хотел бы, чтобы этот ввод был введен.

Спасибо!

Я на самом деле просто вычислил это прямо перед тем, как вы, ребята, ответили.

Я использую bigInt.sign = (number < 0) ? 1 : 0

4b9b3361

Ответ 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);