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)这段运算的过程是如何算出来的 怎么减啊
展开
 我来答
memberwin
2011-07-08 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:514万
展开全部
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所指向字符所在的字符串是否结束
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式