将短路评估转换为非短路评估
converting short-ciruit evaluation to non short-circuit evaluation
我必须重写这段代码,它假设布尔表达式的短路计算:
while ((p!=NULL) && (p->val != v)) p=p->next;
这样它就可以执行完全相同的任务,而无需假设布尔表达式的短路计算。谁能帮我解决这个问题?
我已经在互联网上搜索过,但我得到的只是短路评估和非短路评估之间的区别,但我找不到任何关于重写一个或另一个让他们做同样的事情的东西。这是为了考试复习(不是家庭作业),所以这将对某人解决它有很大帮助,所以我至少知道如何为简单的代码做到这一点。欢迎解释:-)
while(true)
{
if (p == NULL)
break;
if (p->val == v)
break;
p = p->next;
}
一些解释:原始代码依赖于短路评估。 如果p!=NULL
计算结果为 false,则不会评估p->val != v
。如果它始终计算第二个表达式,则可能会导致访问冲突。如果你没有 hva 短路&&
运算符,你需要确保在你的代码中,只有在p!=NULL
时才计算p->val
。
您只需要将 NULL 的检查和 p 成员的访问拆分为两个语句。
短路评估意味着在 AND 条件中,如果第一个操作数为 false,则代码不会费心检查第二个操作数,因为它已经知道结果是"false"。
我会说:
val = null;
while (p != null && val != v)
{
p = p->next();
val = p->val;
}
相关文章:
- std::condition_variable::wait()如何评估给定的谓词
- c++11评估顺序(未定义的行为)
- 如何使用"equal to"以外的评估编写开关语句
- 嵌套 if 中没有返回评估
- C 中的短路评估和分配
- 中毒的无效引用和短路表达评估错误或UB
- 短路评估与2017 C
- 如何使"短路评估"在"折叠表达式"中也可用?
- C/C++优化器是否可以决定延迟评估仅用于短路评估的值
- C++短路评估w.r.t优化
- 编译时是否需要短路评估规则
- 如何使用中间规则操作在野牛中创建短路评估
- 如何在用户定义的函数中实现短路评估
- 短路评估vs可读性
- 短路评估是语言缺陷
- &= 运算符的评估(短路)
- C++编译器优化和短路评估
- RPN短路评估
- 将短路评估转换为非短路评估
- 我可以依靠短路评估来检查向量界在c++