我在我继承的一个文件中看到了下面这行
while ((status = SOME_STATUS == FunctionName(params)))很明显,名字已经被更改了,但是你明白了。谁能给我解释一下编译器是如何设置这些值的,以及它们的顺序是什么?
我在想,将状态设置为SOME_STATUS,然后将其设置为函数的结果?
在我这么多年的开发过程中,我从来没有见过这种情况。为什么会有人这样做呢?完全是胡说八道。或许我就是!
谢谢。-stv
发布于 2017-04-16 00:39:49
就我个人而言,我喜欢这样的代码,因为一旦你记住了运算符优先表,它就会变得非常清晰。
=的优先级比==低,仅此而已。
如果插入多余的圆括号,则根据关系相等的测试,很明显status为1或0。
双开括号可能会取消编译器警告。
发布于 2017-04-16 00:40:30
表达式SOME_STATUS==Func(Params)是解析为true或false的布尔表达式,因此while( status = <boolean expression>)表示:
status with true (SOME_STATUS == Func(Params)) or false (SOME_STATUS != Func(Params)) SOME_STATUS != Func(Params))我必须承认,我更喜欢可读性更好的代码:
...
if( STATUS_OK != Func( Params))
bContinue = false; // or break;
} while( bContinue);https://stackoverflow.com/questions/43428498
复制相似问题