C ++ встроенный, если происходит сбой в коммутаторе - PullRequest
0 голосов
/ 13 августа 2011

Я только что нашел сложный способ встроенного выражения, если (A? B: C) не работает должным образом в операторе switch.

, где A - логическое значение, B и C, оба целых числа не равны 0.Результатом этого оператора является 0, когда он помещается в коммутатор.

Я нашел пост стекопотока [1], где упоминалось это поведение, но не могу найти объяснения, почему это не работает так, как я ожидал.Что вызывает это?

Например:

int foo = 6;

switch(foo)
{
case 6:
  return 10 + true ? 2 : 4;
}

[1] Преимущества встроенных функций в C ++?

1 Ответ

4 голосов
/ 13 августа 2011

Это не имеет ничего общего с switch.

10 + true ? 2 : 4

эквивалентно:

(10 + true) ? 2 : 4.

Если вы хотите, чтобы оно действовало так:1010 * тогда вам нужно будет написать это так.

...