C++问题 tolower函数运用
intStr::stricmp(constchar*str1,constchar*str2){intret=0;while(!(ret=tolower(*str1)-to...
int Str::stricmp(const char *str1, const char *str2)
{
int ret = 0 ;
while( ! (ret = tolower(*str1) - tolower(*str2)) && *str2)
++str1, ++str2;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
! (ret = tolower(*str1) - tolower(*str2)) && *str2 这一段是如何判断的 尤其是tolower(*str1) - tolower(*str2)这段运算的过程是如何算出来的 怎么减啊 展开
{
int ret = 0 ;
while( ! (ret = tolower(*str1) - tolower(*str2)) && *str2)
++str1, ++str2;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
! (ret = tolower(*str1) - tolower(*str2)) && *str2 这一段是如何判断的 尤其是tolower(*str1) - tolower(*str2)这段运算的过程是如何算出来的 怎么减啊 展开
1个回答
展开全部
str1和str2都是字符指针,所以*str1和*str2都是字符
tolower是将字符变为小写字母的函数,也就是让str1和str2指向的字符转为小写
具体两个字符相减,就是其ASCII码值相减,比如'a' = 97, b='98'
'a'-'b' = -1
! (ret = tolower(*str1) - tolower(*str2)) 表示str1和str2指向的字符是否相同(不区分大小写),
相同则为真,否则ret !=0,即不相同
! (ret = tolower(*str1) - tolower(*str2)) && *str2 是判断前述是否相同以及str2所指向字符所在的字符串是否结束
tolower是将字符变为小写字母的函数,也就是让str1和str2指向的字符转为小写
具体两个字符相减,就是其ASCII码值相减,比如'a' = 97, b='98'
'a'-'b' = -1
! (ret = tolower(*str1) - tolower(*str2)) 表示str1和str2指向的字符是否相同(不区分大小写),
相同则为真,否则ret !=0,即不相同
! (ret = tolower(*str1) - tolower(*str2)) && *str2 是判断前述是否相同以及str2所指向字符所在的字符串是否结束
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询