2016-10-13 10 views
0

これは(もっと冗長な方法で)何を変換しますか?3進演算子の変換

local.sin_addr.s_addr = (!ip_address) ? INADDR_ANY:inet_addr(ip_address); 

は三項演算子を理解しようと、私はかなりそれを取得することはできません。

+1

これは言語の基本的な構成です。 [初心者のテキストブック](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)をご覧ください。 –

+2

質問に対する回答は、どの初心者のテキストブックにもありますので、私はこのトピックをトピックとしてクローズしています。 –

答えて

0

3進数はifステートメントと似ていますが、式が必要な場合は使用できます。したがって、それは次のようになります:

if (!ip_address) { 
    local.sin_addr.s_addr = INADDR_ANY; 
} else { 
    local.sin_addr.s_addr = inet_addr(ip_address); 
} 
0

変数に代入したい場合は、3つのオプションがあります。

の同等:

int a = true ? 1 : 2; 

です:

int a; 
if (true) { 
    a = 1; 
} else { 
    a = 2; 
} 

はこのことを理解して、あなたはあなたのコードを変換することができるはずです。

+0

「あなたは正確にオプションがありますか」とはどういう意味ですか? 「あなたはちょうど2つの選択肢がありますか? – Barmar

+0

@Barmarおっと、ごめんなさい、はい。私は非常に疲れています。良いキャッチ。 – Carcigenicate

0

よく三項演算子は、if/elseステートメントの略語です。上記の状態を説明すると、このようになります。

(condition) ? (return true value) : (return false value) 

これは@Carcigenicate answerのような長い形式の文に変換できます。

関連する問題