C++ 整数与字符的加法
有人能解释一下在第一次使用ascii值时发生了什么吗?在int中添加char可以正常工作 但在第二个没有工作 你能解释一下它是怎么工作的吗C++ 整数与字符的加法,c++,string,ascii,C++,String,Ascii,有人能解释一下在第一次使用ascii值时发生了什么吗?在int中添加char可以正常工作 但在第二个没有工作 你能解释一下它是怎么工作的吗 #include<iostream> using namespace std; int main(){ string str="1234"; str[0]=str[0]+1; //working fine cout<<str<<endl; str[1]=str[1]+'c';
#include<iostream>
using namespace std;
int main(){
string str="1234";
str[0]=str[0]+1; //working fine
cout<<str<<endl;
str[1]=str[1]+'c'; //printing some new character at 1 position
cout<<str<<endl;
}
#包括
使用名称空间std;
int main(){
字符串str=“1234”;
str[0]=str[0]+1;//工作正常
coutstr[1]=str[1]+'c'
做'2'+'c'
,这与2+'c'
不同
在ascii中,'2'
是50
,而'c'
是99
其总和为149
,不在ascii(0-127)范围内,因此显示的字符取决于您使用的扩展ascii(可能是ò
)
如果你想拥有2+'c'
,你就必须在你的情况下执行str[1]=str[1]+'c'-'0'
。什么是“不工作”的意思?你期望发生什么?实际发生了什么?什么是“工作正常”的意思?我不确定对字符代码做任何算术的意义(除了将它们视为二进制并应用加密算法,结果是二进制)。文本是非常复杂的数据。这是某种编程练习吗?可能值得补充的是,与他们可能想要的语义等价的是str[1]=(str[1]-“0”)+'c';
请注意,OP的编码在技术上并不能保证是(扩展的)ASCII码,尽管可能是这样。@eerorika:OP编写了ASCII码并对其进行标记,我怀疑OP是否使用EBCDIC:-)@Jarod42-whoops:)知道这一点,OP使用ASCII码的可能性更高,但对于其他访问者来说,这并不是唯一的编码。