在语句末尾转换为小写
Converting to lowercase at end of statement?
轻微问题。(不使用 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 语句处理小写输入?
给定的代码片段可以是函数的主体:
int convert(char& letter)
{
if (letter >= 'A' && letter <= 'Z')
{
letter += 'a' - 'A';
return 0; // go out of this function...
}
else if (letter >= 'a' && letter <= 'z')
{
letter += 'A' - 'a';
return 0; // go out of this function...
}
return -1; // it wasn't a letter as we expected
}
请注意,有一条可能的路径与这两种情况都不匹配。假设letter
是'?'
,因为您返回的是int
值,因此应该有一个指示,表明出了问题(这取决于您如何处理错误处理)。
此函数的可能用法可能如下所示:
char letter = '!';
if (convert(letter) == 0)
// success ...
else
// error ...
如果问题真的是关于离开功能范围,那么这个问题也可能有所帮助:
如何突破函数
具体例子:
void convertLetterAndPrintResult(char& letter)
{
if (convert(letter) == 0)
std::cout << letter << std::endl;
else
std::cout << "ERROR: '" << letter << "' is not valid character!" << std::endl;
}
int main()
{
char letter = '!';
convertLetterAndPrintResult(letter);
letter = 'g';
convertLetterAndPrintResult(letter);
letter = 'L';
convertLetterAndPrintResult(letter);
}
输出:
ERROR: '!' is not valid character!
G
l
因为第一部分有一个return 0;
语句。如果原始字符是大写的,则控制流甚至不会到达第二个嵌套if () { if () { } }
部分。
为什么它会在代码点将大写转换为小写 自第二个 if 语句处理小写输入以来的执行?
那是因为
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;
}
}
如果字母最初是大写字母,则不会执行。它会打印出"您输入了一个大写字母",然后将其转换为小写,然后退出。
为什么转换是在此语句的末尾而不是之前?
如果转换在 cout 语句之前,则没有区别。
相关文章:
- 转换器练习:跳过 if 语句和 if 语句
- 不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写
- "()"如何在C++中将语句转换为表达式?
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 如何强制 GCC 以线性方式转换易失性内联程序集语句
- switch 语句和对象隐式 int 转换
- 输入到字符串流并在单个语句中转换为字符串.可以没有帮助程序类
- 是否可以将结构与条件语句完全相同的字符串转换为可以读取和操作的语句?
- 如何将带有自动的语句转换为使用类型的语句
- C++转换为 C# 读取文本以生成语句
- 转换案例的重复语句
- C++ to_string函数根据额外打印语句的先见之明,为浮点数和整数转换提供不同的结果
- 将 C 按位语句转换为 vb.net
- 如何将 If else 语句转换为 switch 语句
- switch 语句中从 'const char*' 到 'char' 的转换无效
- 将printf语句转换为cout
- 将 cout 语句转换为 fwrite 函数
- 返回语句中的C++11显式转换运算符/构造函数
- switch 语句中从 int 到枚举类的隐式转换
- C#指针:错误CS0254:固定语句赋值的右侧可能不是强制转换表达式