三元运算符翻译

Ternary operator translation

这会翻译成什么(以更详细的方式)?

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

试图理解三元运算符,但我不太明白。

当你想给一个变量赋值时使用三元,你有两个选择。

相当于:

int a = true ? 1 : 2;

是:

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

了解这一点,您应该能够翻译您的代码。

嗯,三元运算符是您的 if/else 语句的 shorthand。要解释上面的情况,它看起来像这样。

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

这可以翻译成像@Carcigenicate answer 这样的长格式语句。

三元类似于if语句,但它可以用在需要表达式的地方。所以它相当于:

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