慕碼人2483693
2022-08-12 18:14:06
int compare(const char * str1,const char * str2 ){ int t = 0 ;while( ! (t = *(unsigned char *)str1 - *(unsigned char *)str2) && *str2)//就是這一行str1++, str2++;if ( t < 0 ) t = -1 ;else if ( t > 0 ) t = 1 ;return( t ); }
2 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)str1,str2單個(gè)字符相等且str2還沒(méi)結(jié)束時(shí)執(zhí)行循環(huán)。

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
先看! (t = *(unsigned char *)str1 - *(unsigned char *)str2),首先處理括號(hào)里面的,然后再!操作,括號(hào)里面是判斷str1和str2的字母是不是一樣,一樣的話,相減就是0,!0就等于1,后面&&str2是判斷是否str2已經(jīng)比完,那整個(gè)判斷條件就是如果當(dāng)前比較的字母一樣,并且*str2不空的話,str1++,str2++,比較下一個(gè)字母。明白了嗎?
添加回答
舉報(bào)
0/150
提交
取消