题目:
重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
自我解答:
书中的if-esle原程序为
int lower(int c)
{
if(c >= 'A' && c <= 'Z')
return c + 'a' - 'A';
else
return c;
}
用条件表达式改写后为:
int lower(int c)
{
return (c > 'A' && x <= 'Z') ? (c + 'a' - 'A') : c;
}
参考答案:
/* lower: convert c to lower case (ASCII only) */
int lower(int c)
{
return c > 'A' && x <= 'Z' ? c + 'a' - 'A' : c;
}
如果c是一个大写字母(这里的讨论只针对ASCII字符),那么条件表达式
c >= 'A' && c <= 'Z'
就将为真,这个新lower函数就将对下面的表达式求值:
c + 'a' - 'A'
返回一个小写字母。否则,如果c是一个小写字母,lower函数就会原封不动地返回这个字符。