在 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'
的值分别为 57
和 53
。
57 + 53
等于 110
.
您要添加的是字符的编码值,而不是它们的数字。
你得到输出 110
(而不是 ASCII 字符 'n'
,其值为 110
),因为加法导致字符 promoted 到int
个值,结果是一个 int
值 而不是 转换为 char
.
没有char operator+(char, char)
,但是有int operator+(int, int)
。因此它首先将 '9'
和 '5'
分别转换为整数 57 和 53 然后进行加法,结果是 int
110.
根据 this,9
的值为 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;
当我编写以下代码时,输出为 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'
的值分别为 57
和 53
。
57 + 53
等于 110
.
您要添加的是字符的编码值,而不是它们的数字。
你得到输出 110
(而不是 ASCII 字符 'n'
,其值为 110
),因为加法导致字符 promoted 到int
个值,结果是一个 int
值 而不是 转换为 char
.
没有char operator+(char, char)
,但是有int operator+(int, int)
。因此它首先将 '9'
和 '5'
分别转换为整数 57 和 53 然后进行加法,结果是 int
110.
根据 this,9
的值为 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;