2016-04-09 4 views
1

Cでプログラミングするときに、条件演算子(?:)を使用しています。しかし、私はelseの部分を使いたくありません。elseを使用せずに条件演算子(?:)を書く方法

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

条件演算子を使用して書き込む方法はありますか?

+1

@Frankie_Cでもコンパイルされません。 –

+3

これには条件演算子を使用しないでください。制御フロー用ではありません。 –

+3

条件演算子とifステートメントの違いは、フラットヘッドとプラスドライバーに似ています。フラットヘッドをフィリップスの場所で使用することもありますが、その作業には最適ではありません。条件文の主な目的の1つは、条件に応じて変数に割り当てる値を変更することです。 if文*それ自体のドロップイン置換としては意図されていません*。 – CodeMouse92

答えて

0

関数内で類似しているように見えますが、条件演算子は条件文(IF文)と同じではありません。

条件付き演算子の主な目的は、条件に応じて変数に割り当てられる値を変更することです。条件演算子の主な目的だ

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

:単にように書き換えることができる

次(ひどい)の例を考えると

...

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

。しかし、コメントでOliver Charlesworthが述べたように、制御フローを意図したものではありません。

したがって、elseを除いた条件演算子が必要な場所にいる場合、は条件演算子を誤って使用しています。

+0

C/C++/Javaプログラムをすばやく読めない場合の条件演算子の2次的な目的。 – jdarthenay

+0

@jdarthenay、ハハ、不適切に使用された場合、それは確かにあります!*賢明に*使用すると、実際には読みやすさが向上します。私は私の答えの中に投稿したような特定の状況のた​​めに、自分自身をむしろ好きです。そのようなものの外、または過度に使用されると、それは真の煙幕です。 – CodeMouse92

2

三項演算子?:は、条件が満たされていない場合、あなたは常に、次の例のような値0としてそこに「ダミー」の値を置くことができる表現を必要とします。

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

アン"if"ステートメントは、おそらくこのような場合にはより良い方法でしょう。

+0

私は何も返さない何かを探していました。 –

+0

これは完全に有効な声明です。文が結果を代入しなくても有効です。例えば、 'x;'という文は値が何にも割り当てられておらずコンパイルされている式です。同様に、この答えの式は 'printf'または' 0'によって返される値を持ちますが、何にも割り当てられません。 –

1

は、これは、異なるオペレータ&&であり、それはあなたが他の部分を省略することができます:

#include <stdio.h> 

int main() { 
    int x = 1; 

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

2xを変更して再度実行し、プログラムを実行してみてください。

+0

これはさらに鈍いです。しないでください。 –

+1

@OliverCharlesworth地球は震え、2つは壊れるのでこれをしないでください。 –

関連する問題