练习 2-10
重新编写将大写字母转换为小写字母的函数 lower,并用条件表达式替代其
中的 if-else 结构。
#include <stdio.h>
void lower(char str[]);
main()
{
char str[] = "Hello World!";
lower(str);
printf("%s\n", str);
}
void lower(char str[])
{
int i, c;
for (i = 0; (c = str[i]) != '\0'; i++)
str[i] = (str[i] >= 'A' && str[i] <= 'Z') ? (str[i] - 'A' + 'a') : str[i];
}
/*
这个没什么好说的
在ASCII码中:
'A'的值是65
'B'的值是66
'C'的值是67
'Z'的值是90
'a'的值是97
'b'的值是98
'c'的值是99
'z'的值是122
-----------------------------------
if
str[i] = 'A'
when
str[i] - 'A' = 0
0 + 97 = 97
97 = 'a'
-----------------------------------
if
str[i] = 'Z'
when
str[i] - 'A' = 25
25 + 97 = 122
122 = 'z'
*/