【发布时间】:2013-01-16 00:16:05
【问题描述】:
小问题。 (不使用 toupper() 和 tolower() 函数)我了解使用数值转换为大写和小写是什么,但是按照我的 C++ 书,为什么转换在此语句的末尾而不是之前?:
if (letter >= 'A') //test for 'A' or larger
if (letter <= 'Z') //test for 'Z' or smaller
{
cout << endl
<< "You entered a capital letter."
<< endl;
letter += 'a' - 'A'; //Convert to lowercase
return 0;
}
if (letter >= 'a') //test for 'a' or larger
{
if (letter <= 'z') //test for 'z' or smaller
{
cout << endl
<< "You entered a small letter."
<< endl;
return 0;
}
}
既然第二个 if 语句处理小写输入,为什么在代码执行时它会将大写转换为小写?
【问题讨论】:
-
在这个时代,这种转换应该被禁止。
-
@AndyProwl 为什么?
'a' - 'A'是一个常数。给这封信分配一个常数是没有意义的。+=使用此技术转换为小写。 -
小心:
char可能已签名或未签名。'a'-'A'如果是无符号类型,可能会下溢。 -
@H2CO3 - += 转换为小写 if 系统使用 ASCII 编码字符 并且 代码只需要处理英文字符字母。只要您在混合中添加重音字符,或者,天堂禁止,西里尔文或希腊文,此代码就会失败。
-
@PeteBecker 你以为我不知道吗?我的目标是指出(假设为 ASCII)它应该是
+=而不是=...
标签: c++ character uppercase lowercase