在 C++ 中添加两个字符文字

Addition of two character literals in c++

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

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

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

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

那是因为字符是用 ASCII 表示的(通常按照评论中的建议)。

文字'9'为57,文字'5'为53。因此它们的总和为110,即文字'm'。

使用 ASCII encoding 时,'9''5' 的值分别为 5753

57 + 53 等于 110.

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

你得到输出 110(而不是 ASCII 字符 'n',其值为 110),因为加法导致字符 promotedint 个值,结果是一个 int 而不是 转换为 char.

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

根据 this9 的值为 57,5 的值为 53。57 + 53 为 110。您要添加这些字符,所以他们被提升为 int,如果你像这样传递一个 int,它会被打印为一个整数。

您可能想要的是

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

打印95。或者

std::cout << 9 + 5;

打印14

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

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

使用 ASCII 编码时,“9”和“5”的值分别为 57 和 53。

57 + 53 等于 110.

程序正在return计算这个值。

如果你想要程序 return 9 和 5 的加法,你必须编写以下语法:-

cout<<9+5;