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
}