Оператор C (не уверен)

#c #operator-keyword

#c #operator-ключевое слово

Вопрос:

Есть ли оператор c , который я мог бы использовать для цикла for, где он будет добавлять или вычитать переменные в зависимости от того, меньше или больше 0 одна из переменных. Например

 int a;
int b;
for(int i=0;i<some_number; i  )
  result = a  < b
  result = a-> b
  

Комментарии:

1. Можете ли вы привести несколько более конкретных примеров того, как должен работать этот оператор?

2. Вы ищете abs (абсолютное значение)? См. cplusplus.com/reference/clibrary/cmath/abs

Ответ №1:

Нет.

Вы можете комбинировать с ?: оператором.

 int a;
int b;
for(int i=0;i<some_number; i  )
  result = (a < b)? result b:result-b;
  

То есть, если я правильно понял ваш пример.

-> является существующим оператором разыменования.

Оператор ?: является эквивалентом if...else конструкции. Если оператор перед ? вычисляется true как, выполняется оператор сразу после ? выполнения, в противном случае выполняется оператор после : выполнения.

Ответ №2:

Вы хотите что-то подобное?

 result  = a > 0 ? b : -b;
  

Обратите внимание, что это приведет к вычитанию b if a == 0 , что не совсем то, о чем вы просили.

Ответ №3:

Не напрямую, но тернарный оператор близок.

 for(int i=0;i<some_number; i  )
    result = (a > 0)?(a):(b);
  

Эта строка будет эквивалентна result = a , когда a больше 0, и result = b в противном случае.

Он также может быть записан как result = a?a:b; , но более длинная форма более удобочитаема.

Ответ №4:

Не уверен, поможет ли это?

 result = a   (b*(a < b));
result = a - (b*(a > b));
  

По сути, (a < b) преобразуется в логическое значение, которое в основном равно либо 1 (true), либо 0 (false). b умножение на 0, конечно, равно нулю, поэтому ничего не добавляется, а b умножение на 1 — это точное b значение.