条件和循环控制结构使用条件表达式来确定程序的控制流.
// conditional control structure
if (conditionalExpression) {
codeThatRunsIfConditionalExpressionIsTrue();
} else {
codeThatRunsIfConditionalExpressionIsFalse();
}
// basic loop control structure
while (conditionalExpression) {
codeThatRunsUntilConditionalExpressionIsFalse();
}
// run-at-least-once loop control structure
do {
codeThatRunsAtLeastOnceUntilConditionalExpressionIsFalse();
} while (conditionalExpression);
从逻辑的角度来看,条件表达式本质上是布尔值(true或false).但是,某些语言(如C和C)允许您使用数字表达式甚至指针作为条件表达式.当非布尔表达式用作条件表达式时,它们将隐式转换为零比较.例如,你可以写:
if (numericalExpression) {
// ...
}
这意味着:
if (numericalExpression != 0) {
// ...
}
这允许简洁的代码,特别是在诸如C和C的指针语言中,其中对空指针的测试非常普遍.但是,使代码简洁并不一定能使它更清晰.在C#或Java等高级语言中,不允许使用数字表达式作为条件表达式.如果要测试是否已初始化对象的引用,则必须编写:
if (myObject != null) /* (myObject) alone not allowed */ {
// ...
}
同样,如果要测试数值表达式是否为零,则必须编写:
if (numericalExpression != 0) /* (numericalExpression) alone not allowed */ {
// ...
}