#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
значение.