これは(もっと冗長な方法で)何を変換しますか?3進演算子の変換
local.sin_addr.s_addr = (!ip_address) ? INADDR_ANY:inet_addr(ip_address);
は三項演算子を理解しようと、私はかなりそれを取得することはできません。
これは(もっと冗長な方法で)何を変換しますか?3進演算子の変換
local.sin_addr.s_addr = (!ip_address) ? INADDR_ANY:inet_addr(ip_address);
は三項演算子を理解しようと、私はかなりそれを取得することはできません。
3進数はif
ステートメントと似ていますが、式が必要な場合は使用できます。したがって、それは次のようになります:
if (!ip_address) {
local.sin_addr.s_addr = INADDR_ANY;
} else {
local.sin_addr.s_addr = inet_addr(ip_address);
}
変数に代入したい場合は、3つのオプションがあります。
の同等:
int a = true ? 1 : 2;
です:
int a;
if (true) {
a = 1;
} else {
a = 2;
}
はこのことを理解して、あなたはあなたのコードを変換することができるはずです。
「あなたは正確にオプションがありますか」とはどういう意味ですか? 「あなたはちょうど2つの選択肢がありますか? – Barmar
@Barmarおっと、ごめんなさい、はい。私は非常に疲れています。良いキャッチ。 – Carcigenicate
よく三項演算子は、if/elseステートメントの略語です。上記の状態を説明すると、このようになります。
(condition) ? (return true value) : (return false value)
これは@Carcigenicate answerのような長い形式の文に変換できます。
これは言語の基本的な構成です。 [初心者のテキストブック](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)をご覧ください。 –
質問に対する回答は、どの初心者のテキストブックにもありますので、私はこのトピックをトピックとしてクローズしています。 –