不久前刚做了一个项目,这两天在看effective C++,结合项目代码突然想到了一个问题,假如我要写一个函数,在函数内部我一般会检查参数的正确性,对于不同的参数,可能有不同的返回值,这个时候就会遇到到底在函数哪个部分去返回,我这儿以一个求字符串长度的函数说明情况...
这是第一种,做出判断后,如果条件出错,直接return......
int mystrlen(char
*str)
{
int count =
0;
if (str == NULL)
{
return
-1;
}
if (str ==
0)
{
return
0;
}
while(str !=
0 ) { count++;
str++;
}
return count;
}
这是第二种,先设置一个变量,对变量赋值,只有一个return.....
int mystrlen(char
*str)
{
int ret;
if (str == NULL)
{
ret =
-1;
}
else
if (str ==
0)
{
ret =
0;
}
else
{
ret =
0;
while(str !=
0 ) { ret++;
str++;
}
}
return ret;
}
这是第三种,使用goto语句:
int mystrlen(char
*str)
{
int ret;
if (str == NULL)
{
ret =
-1;
goto _RET;
}
if (str ==
0)
{
ret =
0;
goto _RET;
}
while(str !=
0 )
{
ret++;
str++;
}
_RET:
return ret;
}
哪种写法更好? |