这里是对 Jeff Atwood article 中所述的 FizzBuzz 问题的描述。
编写一个程序来打印
从 1 到 100 的数字。但是对于
三的倍数打印“Fizz”
而不是数字和
五的倍数打印“嗡嗡声”。为了
两者的倍数
三个和五个打印“FizzBuzz”。
ternary operator 是 if-else 语句的简写。一般格式为:
条件 ? evaluate_if_cond_is_true : evaluate_if_cond_is_false
所以如果我写:
int isEven = (i % 2 == 0) ? 1 : 0;
相当于下面的代码:
if (i % 2 == 0) {
isEven = 1;
} else {
isEven = 0;
}
cond 是i % 2 == 0,evaluate_if_cond_is_true 是1,evaluate_if_cond_is_false 是0。
三元运算符的好处是它们可以组合。这意味着当任一条件评估为真或假时要执行的语句可以是另一个三元运算符。
让整个条件更易读:
i%3==0 ?
i%5==0 ?
"FizzBuzz"
: "Buzz"
: i%5==0 ?
"Fizz"
: i
使用上面解释的规则很容易将其映射到 if-else 语句:
if (i%3==0) {
if (i%5==0) {
"FizzBuzz"
} else {
"Buzz"
}
} else {
if (i%5==0) {
"Fizz"
} else {
i
}
}
这不是有效的代码,但是因为三元运算符的结果被内联在结果表达式中,它被用作 puts 命令的输入。