2016-07-29 6 views
-1

私は値を返す別の方法を見つけて興奮しました。 正確にはどういう意味ですか?返り値zは0ですか? z + y:zは平均ですか?

もし私が推測しなければならないのは、それが... の場合には何かを意味すると言うでしょう。もしz<ならば、zとyを加え、そうでなければzを返します。

int ffunction(int x, int y) 
{ 
    int z = x % y; 
    return z < 0 ? z + y : z; 
} 
+5

3進演算子については、C言語の本またはチュートリアルで説明します。 –

+2

「値を返す別の方法を見つけました」ここには「値を返す別の方法」はありません。 – AnT

+0

@AnTここで言葉を選ぶのがベストではないかもしれません。返り値zのような単純なものを返す代わりに、私はそれを意味しました。これはもっと複雑に見えます。それで全部です。 – ricky162

答えて

4

あなたはternary operatorを使用して、その結果を返します。これは、基本的に1つの行にあるif文です。それは言っている:

if(z < 0) 
{ 
    return z + y; 
} 
else 
{ 
    return z; 
} 
+0

ありがとう!その言葉を聞くのは初めてのことです。 – ricky162

1

zがゼロ(別名negetive)リターンZより低いY +であり、このケースではなかった場合、戻りZ自体(zはゼロまたは正である)場合、それが意味します。コンパクトif文の形である、三項演算子が使用されているあなたの質問に

int ffunction(int x, int y) 
{ 
    int z = x % y; 
    if(z < 0){ 
     return (z + y); 
    } 

    else{ 
     return z; 
    } 
} 

:問題の

if (z<0) 
    return z+y; 
else 
    return z; 
2

あなたのコードが同じである:

同等です。

3

?:は条件演算子と呼ばれる3項演算子(3つのオペランドを持つ演算子)です。第2(z + y)または第3オペランド(z)は、最初のもの(z < 0)が真か偽かに基づいて実行されます。このように、

return z < 0 ? z + y : z; 

if (z < 0) { 
    return z + y; 
} else { 
    return z; 
} 
+1

条件付き演算子ですが、 "条件演算子"ではありません。三項演算子です。 – Sixty4Bit

+2

@ Sixty4Bit、あなたはそれを後方に持っています。 * a *条件演算子と呼ばれる* a * 3項演算子です。他の三項演算子があります(Cではありません)。リンク先のドキュメントを参照してください。 – ikegami

+0

ありがとう!今日何かを学んだ。 – Sixty4Bit

2

これはコンパクトifの形態であることと等価です。 Basiclyは、それを言っている:

if (z < 0) 
    return z + y; 
else 
    return z; 
0

条件演算子。関数は、zが0より小さい場合はz + yを返し、そうでない場合はzを返します。

+2

三元演算子。 – ameyCU

関連する問題