这是一个代码段,我不明白为什么+32和-32会加或减以使字符大写小写。
/******** function definition *******/ void stringLwr(char *s) { int i=0; while(s[i]!='\0') { if(s[i]>='A' && s[i]<='Z'){ s[i]=s[i]+32; } ++i; } } void stringUpr(char *s) { int i=0; while(s[i]!='\0') { if(s[i]>='a' && s[i]<='z'){ s[i]=s[i]-32; } ++i; } }
为了获得更多参考,我正在网站C程序上学习它以进行大写和小写转换。
为ASCII码a
- z
是97-122。
为ASCII码A
- Z
是65-90。
要获得A
从a
,你需要减去32
来获取a
从A
,你需要添加32。
为了使代码更加清晰,可以使用:
s[i] += ('a' - 'A'); // 'a' = 'A' + ('a' - 'A');
将大写字母转换为小写字母时,以及
s[i] += ('A' - 'a'); // 'A' = 'a' + ('A' - 'a');
将小写字母转换为大写字母时。