Skip to content

Commit 12d6ddf

Browse files
committed
更新三元运算符
1 parent 0ac84f9 commit 12d6ddf

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

docs/book/04-Operators.md

+45-1
Original file line numberDiff line numberDiff line change
@@ -816,12 +816,56 @@ i >>> 5, int: 97591828, binary:
816816
```
817817

818818

819-
结尾的两个方法 **printBinaryInt()****printBinaryLong()** 它们分别操作一个 **int****long** 值,并转换为二进制格式输出,同时附有简要的说明文字。除了演示 **int****long** 的所有位运算符的效果之外,本示例还显示 **int****long** 的最小值、最大值、+1 和 -1 值,以便我们了解它们的形式。注意高位代表符号:0 表示正,1 表示负。上面显示了 **int** 部分的输出。数字的二进制表示称为有符号的两个补数。
819+
结尾的两个方法 **printBinaryInt()****printBinaryLong()** 它们分别操作一个 **int****long** 值,并转换为二进制格式输出,同时附有简要的文字说明。除了演示 **int****long** 的所有位运算符的效果之外,本示例还显示 **int****long** 的最小值、最大值、+1 和 -1 值,以便我们了解它们的形式。注意高位代表符号:0 表示正,1 表示负。上面显示了 **int** 部分的输出。数字的二进制表示称为有符号的两个补数。
820820

821821

822822
<!-- Ternary-if-else-Operator -->
823823
## 三元运算符
824824

825+
三元运算符,也称为条件运算符。这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。这与本章后一节要讲述的普通 **if-else** 语句是不同的。下面是它的表达式格式:
826+
827+
**布尔表达式 ? 值1 : 值2**
828+
829+
若表达式计算为 **true**,则返回结果 **值1** ;如果表达式的计算为 **false**,则返回结果 **值2**
830+
831+
当然,也可以换用普通的 **if-else** 语句(在后面介绍),但三元运算符更加简洁。作为三元运算符的创造者, C 自诩为一门简练的语言。三元运算符的引入多半就是为了高效编程,但假若我们打算频繁使用它的话,还是先多作一些思量: 它易于产生可读性差的代码。与 **if-else** 不同的是,三元运算符是有返回结果的。请看下面的代码示例:
832+
833+
834+
```java
835+
// operators/TernaryIfElse.java
836+
public class TernaryIfElse {
837+
838+
static int ternary(int i) {
839+
return i < 10 ? i * 100 : i * 10;
840+
}
841+
842+
static int standardIfElse(int i) {
843+
if(i < 10)
844+
return i * 100;
845+
else
846+
return i * 10;
847+
}
848+
849+
public static void main(String[] args) {
850+
System.out.println(ternary(9));
851+
System.out.println(ternary(10));
852+
System.out.println(standardIfElse(9));
853+
System.out.println(standardIfElse(10));
854+
}
855+
}
856+
```
857+
858+
输出结果:
859+
860+
```
861+
900
862+
100
863+
900
864+
100
865+
```
866+
867+
可以看出,**ternary()** 中的代码更简短。然而,**standardIfElse()** 中的代码更易理解且不要求更多的录入。所以我们在挑选三元运算符时,请务必权衡一下利弊。
868+
825869

826870
<!-- String-Operator-+-and-+= -->
827871
## 字符串运算符

0 commit comments

Comments
 (0)