首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助理解while ((status = SOME_STATUS == FunctionName(Params)

需要帮助理解while ((status = SOME_STATUS == FunctionName(Params)
EN

Stack Overflow用户
提问于 2017-04-16 00:33:25
回答 2查看 47关注 0票数 0

我在我继承的一个文件中看到了下面这行

代码语言:javascript
复制
while ((status = SOME_STATUS == FunctionName(params)))

很明显,名字已经被更改了,但是你明白了。谁能给我解释一下编译器是如何设置这些值的,以及它们的顺序是什么?

我在想,将状态设置为SOME_STATUS,然后将其设置为函数的结果?

在我这么多年的开发过程中,我从来没有见过这种情况。为什么会有人这样做呢?完全是胡说八道。或许我就是!

谢谢。-stv

EN

回答 2

Stack Overflow用户

发布于 2017-04-16 00:39:49

就我个人而言,我喜欢这样的代码,因为一旦你记住了运算符优先表,它就会变得非常清晰。

=的优先级比==低,仅此而已。

如果插入多余的圆括号,则根据关系相等的测试,很明显status为1或0。

双开括号可能会取消编译器警告。

票数 2
EN

Stack Overflow用户

发布于 2017-04-16 00:40:30

表达式SOME_STATUS==Func(Params)是解析为truefalse的布尔表达式,因此while( status = <boolean expression>)表示:

  1. Assign variable status with true (SOME_STATUS == Func(Params)) or false (SOME_STATUS != Func(Params))
  2. 继续循环,直到d13为d14(即- SOME_STATUS != Func(Params))

我必须承认,我更喜欢可读性更好的代码:

代码语言:javascript
复制
  ...
  if( STATUS_OK != Func( Params))
    bContinue = false; // or break;

} while( bContinue);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43428498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档