Rel*_*lla 4 c++ java boolean integral conditional-expressions
什么'条件表达式只能是布尔值,而不是整数.' 意思?我不知道Java,我知道C++ deffenetly不应该强调它意味着什么..请帮助(在比较C++和Java项目中找到http://www.javacoffeebreak.com/articles/thinkinginjava/comparingc++andjava.html 7子项目1)
这意味着您需要一个条件的布尔值,来自整数类型的转换将不是隐式的.而不是if (x)你需要if (x != 0)等
前者是int隐式转换为boolC++(via != 0)的,但后者的表达式直接产生布尔值.
条件和循环控制结构使用条件表达式来确定程序的控制流.
// 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);
Run Code Online (Sandbox Code Playgroud)
从逻辑的角度来看,条件表达式本质上是布尔值(true或false).但是,某些语言(如C和C++)允许您使用数字表达式甚至指针作为条件表达式.当非布尔表达式用作条件表达式时,它们将隐式转换为零比较.例如,你可以写:
if (numericalExpression) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这意味着:
if (numericalExpression != 0) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这使得简洁的代码,尤其是在指针语言,如C和C++,在测试空指针是相当普遍的.但是,使代码简洁并不一定能使它更清晰.在C#或Java等高级语言中,不允许使用数字表达式作为条件表达式.如果要测试是否已初始化对象的引用,则必须编写:
if (myObject != null) /* (myObject) alone not allowed */ {
// ...
}
Run Code Online (Sandbox Code Playgroud)
同样,如果要测试数值表达式是否为零,则必须编写:
if (numericalExpression != 0) /* (numericalExpression) alone not allowed */ {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |