Оператор C ++ (не уверен) - PullRequest
       0

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

0 голосов
/ 22 октября 2011

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

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

Ответы [ 4 ]

3 голосов
/ 22 октября 2011

Нет.

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

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

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

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

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

1 голос
/ 22 октября 2011

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

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

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

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

1 голос
/ 22 октября 2011

Хочешь что-нибудь подобное?

result += a > 0 ? b : -b;

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

0 голосов
/ 22 октября 2011

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

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

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

...