我需要用任何语言编写程序,如果语言在if-then-else运算符中使用短路评估,则打印1;如果语言不使用,则打印0。
我的问题是,if-then-else运算符中的短路评估是什么意思?
它只是在&&和&和||经营者?
答案 0 :(得分:1)
如果我正确地阅读了这个问题,那么是的。在实现此目的的语言中,如果您有类似
的语句if (A || B || C || D)
一旦发现一个真实的语句,运行时就会停止评估。例如,如果A和B为假但C为真,则它将评估A,B和C但不评估D.如果您执行以下操作,这很重要:
if (a != null && a.ToString() == "abc")
短路行为意味着如果a
实际上是null
,那么if语句的后半部分将被执行,这是至关重要的,因为如果那不是&#39 ;在这种情况下,此语句可能会抛出一个空引用异常。如果不是因为你不得不做类似
if (a != null) {
if (a.ToString() == "abc") {
// ...
这显然不那么简洁。
&安培;&安培;行为方式类似:
if (A && B && C && D) ...
例如,如果A
为false
,为什么还要检查其余的表达式?
就作业而言,我会给你一个提示:如果你在其中一个表达中产生副作用会怎样?
答案 1 :(得分:1)
如果有人面临类似的任务/希望了解更多关于C中if运算符短路的信息: 首先,让我们按如下方式标记if运算符的每个部分:
如果(表达式)? BlockA:BlockB;
现在,在跟随if-then-else运算符短路的PL C中,如果表达式被评估为真,则仅 BlockA被评估,否则仅 BlockB被评估
让我们假设现在C不跟随短路,发生的是两者 BlockA和BlockB都被评估,无论表达式的评估结果如何(听起来很愚蠢和危险,但显然是这样的它有效)