2015-04-01 5 views
0

является тройным оператором лучше, чем если бы блокировка оставалось во время выполнения или под другим scenerio? Я прошел через многие ссылки, но не получил удовлетворенного ответа.Тернарный оператор vs if else

+1

Привета, Добро пожаловать в StackOverflow! Ваш вопрос слишком широк; как вы уже заметили * при разных сценариях, подразумевается, что есть много случаев, чтобы рассмотреть. Поскольку вы относитесь к производительности, вы уже должны знать о том, что есть слишком много факторов, чтобы дать вам общий ответ. Здесь нет ничего, что могло бы заменить ваше собственное тестирование! –

ответ

7

Это не лучше или хуже. Это разные, потому что это выражение. Это означает, что вы можете делать такие вещи, как инициализировать переменные с ним:

int n = some_flag ? 0 : 42; 

или использовать его в других местах, требующих выражения:

printf("Hello number %d", some_flag ? 0 : 42); 

Вы не можете сделать это с, если-иначе. Что касается производительности, то в тех случаях, когда эти два являются взаимозаменяемыми, крайне маловероятно, чтобы они изменили ситуацию.

0

На большинстве современных компиляторов это не имеет значения, если вы используете любой из двух. Единственное, на что вы можете сосредоточиться, это ремонтопригодность кода. Единственное отличие, которое вы можете получить от тройного оператора, состоит в том, что в зависимости от некоторого выражения вы можете инициализировать постоянную переменную. Что-то вроде этого:

const int a = (x<y) ? y : x; 

, которые не могут быть сделаны с помощью, если еще

Смежные вопросы