C++ 在语句末尾转换为小写?

C++ 在语句末尾转换为小写?,c++,character,uppercase,lowercase,C++,Character,Uppercase,Lowercase,小问题。(不使用ToupPyter)和ToWORE()函数,我理解用数值转换成大写和小写的方法是什么,但在我的C++书籍之后,为什么在这个语句的末尾转换而不是以前? if (letter >= 'A') //test for 'A' or larger if (letter <= 'Z') //test for 'Z' or smaller { cout << endl << "You entere

小问题。(不使用ToupPyter)和ToWORE()函数,我理解用数值转换成大写和小写的方法是什么,但在我的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(字母>='A')//测试'A'或更大

if(字母,因为在第一部分中有一个
返回0;
语句。如果原始字符是大写的,控制流甚至不会到达第二个嵌套的
if(){if(){}
part.

因为在第一部分中有一个
返回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;
    }
}
if(字母>='a')//测试'a'或更大
{
如果(信)
为什么在代码的这一点上它会将大写转换为小写
从第二个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;
    }
}
if(字母>='a')//测试'a'或更大
{

如果(字母给定的代码段可能是函数体:

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
}
如果问题真的是关于离开功能范围,那么这个问题也会有帮助:


具体例子:

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);
}

给定的代码段可以是函数体:

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
}
如果问题真的是关于离开功能范围,那么这个问题也会有帮助:


具体例子:

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);
}


在当今时代,这种转换应该被禁止。@AndyProwl为什么?
'a'-'a'
是一个常数。给字母指定一个常数是没有意义的。
+=
使用这种技术将字符转换成小写。注意:
字符可以是有符号的,也可以是无符号的。
'a'-'a'
如果是无符号的,可能会下溢。@H2CO3-+=如果系统使用ASCII对字符进行编码,代码只需处理英文字母表中的字符,则转换为小写。一旦您在混合字符中添加重音字符,或者,但愿如此,西里尔语或希腊语,此代码将失败。@PeteBecker您认为我不知道吗?我的目标是指出这一点(假设为ASCII)它应该是
+=
而不是
=
…在当今时代,这种转换应该被禁止。@AndyProwl为什么?
'a'-'a'
是一个常量。给字母指定一个常量是没有意义的。
+=
使用这种技术将字符转换为小写。注意:
字符可以是有符号的,也可以是无符号的。
'a'-'a'
如果是无符号类型,则可能会下溢。@H2CO3-+=如果系统使用ASCII编码字符,代码只需处理英文字母表中的字符,则会转换为小写。只要你在混音中添加重音字符,或者,天禁止,西里尔文或希腊文,此代码就会失败。@PeteBecker你认为我不知道吗我的目标是指出(假设ASCII)它应该是
+=
,而不是
=
…我知道,但在那种情况下,最好先检查并转换字母字符。我就是不明白为什么要在return结束操作之前转换成小写。@wilbomc:
return
不会终止程序的执行,它只是让执行离开已调用的函数,并将返回的值传递给调用方我认为返回基本上是返回程序对操作系统的控制,从而结束它。但是我仍然在早期学习C++。所以返回基本上是返回小写值吗?@ WiMrC再次读取C++的Grand。
return 0;
只返回0。不多不少。我重新阅读了教程。我现在的印象是,作者只是展示了一种转换为小写和大写的方法,但写的方式令人困惑,我猜(可能是错误的),首先不需要小写转换,至少在我编写的示例中是这样。在我看来,转换会更好地验证用户输入。但我只是一个初学者。我理解这一点,但在那种情况下,在手之前检查并转换字母字符不是更好吗?这对我来说毫无意义y one将在return结束操作之前转换为小写。@wilbomc:
return
不会终止程序的执行,它只是使执行离开已调用的函数并将返回值传递给调用方。现在检查我的答案:)我认为返回基本上是返回程序到操作系统的控制,这样就结束了。但是我仍然在学习C++。所以返回基本上是返回小写值。@ WiMroc再次读取C++的Turrand:<代码>返回0;< /C>简单地返回0。没有更多,没有更多。我重新阅读教程。我现在在IPPR下。Session作者只是展示了一种转换成小写和大写的方法,但写的方式令人困惑,我猜(可能是错的),一开始就不需要小写转换,至少在我编写的示例中是这样。在我看来,转换会更好地验证用户输入。但我只是一个初学者。谢谢。这个问题也很有帮助,当我到了分解函数的阶段时,会回头看。然而,我的问题是,我简言之,为什么要在返回语句之前将大写字母转换为小写字母。但我已经开始掌握它了。谢谢。这个问题也很有帮助,当我到了分解函数的阶段时,我们将回顾它。然而,简言之,我的问题是,为什么要将大写字母转换为小写字母