Sod*_*der 0 c++ standards operator-precedence
我有以下结构定义和特定用例:
struct foo
{
bool boo;
};
int main()
{
foo* f = 0;
.
.
.
if ((f) && (f->boo)) // <--- point of contention
return 0
else
return 1;
}
Run Code Online (Sandbox Code Playgroud)
标准是否保证上面if语句中的第一组括号始终在第二个之前进行评估?
如果没有什么是最好的重写上面的代码?
目前我有以下一塌糊涂:
if (f)
{
if (f->boo)
return 0;
else
return 1;
}
else
return 1;
Run Code Online (Sandbox Code Playgroud)
这可能是一种风格问题,但你可以说:
return (f && f->boo);
Run Code Online (Sandbox Code Playgroud)
......或者稍微明确一点:
return ((f && f->boo) ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |