为什么Visual Studio会使用以下代码向我显示该错误:
int func( int a )
{
if ( a < 0 )
return -a & 3;
else if ( a > 0 )
return a | 8;
else if ( a == 0 )
return 10;
}
答案 0 :(得分:1)
似乎编译器不够聪明。:)
尝试按以下方式更改功能主体
if ( a < 0 )
return -a & 3;
else if ( a > 0 )
return a | 8;
else
return 10;
此外,您可以在其他地方发表评论,因为 @buc
提供建议if ( a < 0 )
return -a & 3;
else if ( a > 0 )
return a | 8;
else /* a == 0 */
return 10;
答案 1 :(得分:1)
编译器不够聪明,无法意识到你的三个案例中的一个必须被击中。写它的更好方法是:
int func( int a )
{
if ( a < 0 )
{
return -a & 3;
}
if ( a > 0 )
{
return a | 8;
}
// a must be 0
return 10;
}