C++ return等关键字编写规则
C++ return等关键字编写规则
在c++中有3中改变语义顺序的关键字 return、break、continue.当它们和if组合时,有2种写法.
法1 | 法2 | |
---|---|---|
实现方式 | 语义转换用else | 语义转换用新行 |
示例 | |
|
优劣 | 容易漏掉 return 且,匹配查找困难.如果if内语句很长,很难找到else各种返回值 | 不会漏掉return. 查看else情况清晰. 代码更精简 |
推荐度 | 不推荐(语法吃透不够,不够优雅) | 强烈推荐(语法深度理解. 非常优雅) |
s32 func(s32 a)
{
if(a >= 0)
{//编译器预测不执行内部
while(1)
{
if(a > 3)
{
a -= 1;
continue;
}
else //语义转换用else
{
a -= 2;
}
}
if(a == 1)
{
return 2;
}
else if(a == 2) //冗余的else
{
return 3;
}
else
{
return 0;
}
}
else
{
return -1;
}
}
s32 func(s32 a)
{
if(a < 0)
{
return -1;
}
//编译器预测执行下语句
while(1)
{
if(a > 3)
{
a -= 1;
continue;
}
a -= 2; //语义不连续写新行
}
if(a == 1)
{
return 2;
}
if(a == 2) //隐藏else语义清晰
{
return 3;
}
return 0; //不会漏else
}