zgy666zgy 发表于 2022-10-2 10:36:05

大佬救命

str -=32 为啥可以把小写字母转化为大写字母
虽然我知道和ascii表有关,但我不懂-=是什么意思

jackz007 发表于 2022-10-2 10:42:01

本帖最后由 jackz007 于 2022-10-2 10:44 编辑

str[ i ] -=32 就是 str[ i ] = str[ i ] - 32,同一个英文字母的大写字母比小写字母小 32,这个表达式是在把一个小写字母转换为大写字母。

tommyyu 发表于 2022-10-2 10:43:35

小写字母的ascii码总是比大写字母的大32
比如,a的ascii码是97,A的ascii码是65,那么,'a' - 32 = 97 - 32 = 65 = 'A'
ascii码对照表

Twilight6 发表于 2022-10-2 10:43:46

本帖最后由 Twilight6 于 2022-10-2 10:46 编辑


举个例子:

i -= 1 就是 i=i - 1,也就是将扣除 1 后的值重新赋值给 i

所以这里 str[ i ] -=32 就是str[ i ] =str[ i ] - 32 ,即将str 中第 i 个元素 扣除 32 赋值回到 str 的第 i 索引元素值

而为什么 -32 就能将小写字母转换为大写,是因为 大小写字母的 ASCII 码值是按照字母顺序为正序且连续

而且大写字母的 ASCII 和 小写字母的 ASCII 码值正好都只差 32,所以所有大小写字母的 ASCII 码值也都差 32

实在不理解可以看看 ASCII 表:https://www.runoob.com/w3cnote/ascii.html

wp231957 发表于 2022-10-2 10:44:07

c 是支持++-- 操作符的
其他语言大都可以把x=x+1   简写为x+=1
页: [1]
查看完整版本: 大佬救命