2016-04-09 3 views
1

При программировании на C я использую условный оператор (? :). Но я не хочу использовать еще часть.Как написать условный оператор (? :) без использования else

if(x!=1){printf("Hello");} 

Как написать условный оператор?

+1

@Frankie_C, который даже не компилируется. –

+3

Не пытайтесь использовать условный оператор для этого - он не предназначен для потока управления. –

+3

Разница между условными операторами и операторы if аналогичны отверткам Flathead и Phillips - иногда вы можете использовать плоскую головку вместо Phillips, но это не подходит для работы. Одной из основных целей условного оператора является изменение значения, которое вы назначаете переменной в зависимости от условия. Он не предназначен как замена для if-statement * per se *. – CodeMouse92

ответ

0

Хотя они выглядят похожими по функции, условные операторы не совпадают с условными операторами (утверждениями IF).

Основной целью условного оператора является изменение того, какое значение присваивается переменной, в зависимости от состояния.

Учитывая следующее (ужасный) пример ...

if(raining==true) 
{ 
    take="umbrella"; 
} 
else if(raining==false) 
{ 
    take="sunglasses"; 
} 

Это можно переписать просто как:

take=(raining ? "umbrella" : "sunglasses"); 

Это главная цель условного оператора. Но, как сказал Оливер Чарлворт в комментариях, он не предназначен для контроля потока.

Таким образом, как правило, если вы находите себя в месте, где вы хотите условного оператора без else, вы используете условные операторы неправильно.

+0

Вторичная цель условного оператора, если быстро сделать C/C++/Java-программу нечитаемой. – jdarthenay

+0

@jdarthenay, ха-ха, когда используется неправильно, это конечно !!Я замечаю, что при использовании * мудро *, это на самом деле повышает читаемость. Я предпочитаю их самих, для определенных ситуаций, подобных тому, который я опубликовал в своем ответе. Вне таких вещей или при чрезмерном использовании это настоящий дымовой экран. – CodeMouse92

2

Тройная оператор ?: требуется выражение, если условие не выполнено, то всегда можно поместить значение «фиктивный» там такие, как значение 0, как в следующем примере:

x != 1 ? printf("Hello") : 0;

An «Если» утверждение, вероятно, будет лучшим способом пойти в таких случаях.

+0

Я искал что-то, где он ничего не возвращает. –

+0

Это совершенно правильное утверждение. Оператор может быть действительным, даже если он не присваивает результат. Например, выражение 'x;' является выражением, значение которого ничем не привязано, а компилируется. Точно так же выражение в этом ответе либо имеет значение, возвращаемое 'printf', либо' 0', но оно ничем не привязано. –

1

Это другой оператор && и позволяет опустить еще часть:

#include <stdio.h> 

int main() { 
    int x = 1; 

    x != 1 && printf ("Hello\n"); 
    return 0; 
} 

Попробуйте запустить программу, а затем изменить x к 2 и запустить снова.

+0

Это еще более тупой. Пожалуйста, не делайте этого. –

+1

@OliverCharlesworth Не делай этого, потому что земля трясет, а две разломаются? –

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