转换大小写

如果每个字符不是小写就是大写英文字母,也可以用
for (i=0;s[i]!=0;i++) s[i]&=0xdf;
把0结尾字符串s里面的每个小写字母变大写,大写字母不变。

for (i=0;s[i]!=0;i++) s[i]|=0x20;
把0结尾字符串s里面的每个大写字母变小写,小写字母不变。

可以解释一下s[i]&=0xdf; 和s[i]|=0x20; 的作用么?谢谢!

0xdf = 1101 1111
大小写字母间ASCII值差32=2^5
与0xdf作与运算,其余各位保持不变,只有2^5位处由1变0,即减去32。
至于0x20类似原理
0x20 = 0010 0000.
温馨提示:答案为网友推荐,仅供参考
相似回答