以下是哪种做事的首选方式,为什么?假设函数bar()在任何时候都没有取零值,是否存在任何不同的具体情况?
案例1:测试两种情况的真值
if ((foo = bar()) && foo < 0)
error();
Run Code Online (Sandbox Code Playgroud)
案例2:仅测试分配的变量
if ((foo = bar()) < 0)
error();
Run Code Online (Sandbox Code Playgroud)
MBy*_*ByD 14
首选方法是将它们分开:
foo = bar();
if (foo < 0)
error();
Run Code Online (Sandbox Code Playgroud)
编辑:这是可读性和避免错误的更好方法,例如在第一种情况下:
if (foo = bar() && foo < 0)
error();
Run Code Online (Sandbox Code Playgroud)
这应该是:
if ((foo = bar()) && foo < 0)
error();
Run Code Online (Sandbox Code Playgroud)