if 语句或拆分中的多个条件
Multiple Conditions in If Statement or Splitting
当我使用具有多个条件的 if 语句时,如何在编译器中管理它们?
A) 如果第一个语句没有实现,它是否会忽略第二个语句,反之亦然?
If(time > 3.0 && hitEnabled)
B) 通常建议使用后期定义,所以我应该更喜欢在 if 语句中使用一个条件吗?
if(time > 3.0)
if(hitEnabled)
谢谢!
if(time > 3.0 && hitEnabled)
在上面的陈述中,当time > 3.0
为假时,将不会评估hitEnabled
。
这称为短路。
以下语句将计算hitEnabled
即使time > 3.0
为 false,但当两个操作数都true
时返回 true。
if(time > 3.0 & hitEnabled)//note bitwise &
if(time > 3.0)
if(hitEnabled)
嵌套的if语句在您需要多次检查第一个条件等时很有用。
if(time > 3.0 && hitEnabled)
{
//DoSomething1
}
if(time > 3.0 && flag)
{
//DoSomething2
}
这可以使用嵌套的 if 语句重新编写,如下所示
if(time > 3.0)
{
if(hitEnabled)
{
//DoSomething1
}
if(flag)
{
//DoSomething2
}
}
在这种情况下,我更喜欢嵌套的if语句以避免不必要的检查
如果第一个条件为假,则&&
,则永远不会评估第二个条件,并且总体结果为假。在||
的情况下,如果第一个条件为真,则不计算第二个条件,总体结果为真。正如Rob所指出的,它被称为短路评估。
这在我们想仅在第一个操作数返回 true 时才计算 if
语句的第二个操作数的情况下很有用。例如,我们可能希望在使用变量之前检查变量的有效性。
if(ptr != NULL && *ptr > x)
在这种情况下,只有当 ptr
的值未NULL
时,才会根据 x 进行检查。
A) 如果第一个条件为 false,它不会检查 hitEnabled,如果你想这样做,你必须使用短路 AND (&),如下所示。即使第一个条件为 False,它也会检查第二个条件。
If(time > 3.0 & hitEnabled)
B) 这在很大程度上取决于您对应用程序的期望,而不是硬件的性能。如果你想在任何情况下检查这两个条件,B 选项是完全可以的,但如果你确定你的时间> 3.0 是假的并且你不想检查第二个,在我看来,A 选项更可取。正如我之前所说,它在很大程度上取决于程序的逻辑,因此您无法基于一行代码获得正确的答案。
如果你问没有逻辑背景有什么更好的写作方式,这取决于你。如果您遵循代码约定,这两种变体都易于阅读。
表达式的计算在确定为真或假时立即停止。
这允许像 if (x != null && x.property ...
as x.property 这样的表达式在 x 为 null 等情况下不会被计算。
String someString = null;
if (someString != null && someString[4].Equals('a'))
{
//// not called
}
if (someString != null || someString[4].Equals('a'))
{
//// exception
}
Console.ReadLine();
在第一种情况下:
If(time > 3.0 && hitEnabled)
如果time > 3.0
为假,则永远不会检查hitEnabled
。它总是从左到右开始检查条件。
如果要确保检查所有条件,则应使用||
(逻辑OR
)而不是&&
(逻辑AND
),例如:
If(time > 3.0 || hitEnabled)
这:
if(time > 3.0 && hitEnabled)
等于
if(time > 3.0)
if(hitEnabled)
如果违反了第一个条件,它不会检查第二个条件,它只是忽略。如果你想放任何代码,最好让它嵌套。
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- CPP 带有条件语句的内在事物
- 如果验证容器的大小并在同一条件语句下访问元素,这是很好的做法吗?
- C++ - 这个条件语句写得正确吗?还是有更有效的写法?
- 条件语句简化 - C++
- 如何在C++中定义扩展到条件语句的宏?
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 是否可以编写C++不使用任何条件语句交换输入的函数?
- C++未检查条件语句
- 输出错误命令的条件语句
- 是否可以删除此条件语句
- 如何在Char数组中搜索Char在IF条件语句中
- 可视化优雅C++代码:如何使用 while 循环和条件语句编写更高效的代码
- 输入未正确读取条件语句
- 我可以将循环用作如果其他条件语句
- 是否可以将结构与条件语句完全相同的字符串转换为可以读取和操作的语句?
- 简化重叠和条件语句
- 如果条件语句中的变量分配
- C++模板中的条件语句,只能由编译器基于条件包含
- 在条件语句中接受和使用 char