【问题标题】:Addition of two character literals in c++在 C++ 中添加两个字符文字
【发布时间】:2018-10-04 13:11:21
【问题描述】:

当我编写以下代码时,输​​出为 110。谁能告诉我为什么我得到这个值?

#include<iostream>
int main()
{
    std::cout << '9' + '5';
    return 0;
}

【问题讨论】:

  • 顺便说一句,您的代码中没有字符串
  • @Exterminator 这些是字符文字,而不是字符串。
  • Sum of two chars in C/C++的可能重复
  • @Slava 可能,但 OP 从来没有这么说,我删除的任何内容都没有提到这一点。如果这是 OP 想要的,您应该要求他们澄清这一点。
  • @NathanOliver “但 OP 从未说过”他实际上是按主题所做的,而您将其删除。

标签: c++ character literals addition


【解决方案1】:

对于ASCII encoding'9''5' 的值分别为5753

57 + 53 等于 110

您添加的是字符的编码值,而不是它们的数字。

你得到输出110(而不是ASCII字符'n',它的值是110),因为加法会导致字符从promoted变为int值,结果是@ 987654333@ 值转换为char

【讨论】:

  • "而不是 ASCII 字符 'n'" 我认为 OP 期望得到字符串 "95" 作为结果,而不是字符
  • @Slava 我知道,但我的意思是 110'n'
  • 我明白了,但我得到的是 OP 想要得到 n 的结果,他问为什么是 110。
【解决方案2】:

根据this9 的值为 57,5 的值为 53。57 + 53 为 110。您正在添加这些字符,因此它们被提升为 int,如果你像这样传递int,它会被打印为int。

你可能想要的是

std::cout << '9' << '5';

打印95。或者

std::cout << 9 + 5;

打印14

【讨论】:

    【解决方案3】:

    没有char operator+(char, char),但有int operator+(int, int)。因此,它首先将'9''5' 分别转换为整数57 和53,然后进行加法运算,结果为int 110。

    【讨论】:

      【解决方案4】:

      9 的 ASCII 值是 57,5 的 ASCII 值是 53。所以 57 + 53 等于 110。

      字符没有添加,您正在添加它们的 ascii 值。如果将结果转换为 char,则结果应为 n

      【讨论】:

        【解决方案5】:

        根据原始标题,OP 的意图可能是将两个字符串数字连接在一起。如果是这样,这应该可以实现。

        #include<iostream>
        #include<string>
        int main()
        {
            std::cout << std::string("9") + std::string("5");
            return 0;
        }
        

        【讨论】:

          【解决方案6】:

          这是因为 char 用 ASCII 表示(通常按照 cmets 的建议)。

          字面量 '9' 是 57,字面量 '5' 是 53。因此它们的总和是 110,即字面量 'm'。

          【讨论】:

          • chars 不必是 ASCII。
          • @LightnessRacesinOrbit 我不知道没有实现。虽然,我真的很好奇标准是怎么说的
          • @LightnessRacesinOrbit 谢谢你的链接!
          【解决方案7】:

          使用 ASCII 编码,'9' 和 '5' 的值是 57 和 53。

          57 + 53 等于 110。

          程序正在返回这个值。

          如果您希望程序返回 9 和 5 的加法,您必须编写以下语法:-

          cout

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-27
            • 2011-04-22
            • 1970-01-01
            • 2015-07-14
            • 1970-01-01
            • 2020-04-15
            • 2013-11-11
            • 1970-01-01
            相关资源
            最近更新 更多