- 当整数是输入时的explain输出
-why -47如果输入为5则递增该值
#includeusing namespace std; int main() { string s; cin>>s; cout<<(*s.begin())-47; } return 0; }
Vlad from Mo.. 5
在ASCII字符2中有代码50.所以50 - 47将导致3.因此如果在语句中
cin>>s;
你没死2
然后在声明中
cout<<(*s.begin())-47;
由于整数提升而*s.begin()-47
等效的表达式'2' - 47
被转换为类型int
并且等于3('2' - 47 => 50 - 47 == 3).
考虑到该调用s.begin()
返回迭代器,该迭代器指向字符串的第一个字符并*s.begin()
产生字符本身.
在ASCII字符2中有代码50.所以50 - 47将导致3.因此如果在语句中
cin>>s;
你没死2
然后在声明中
cout<<(*s.begin())-47;
由于整数提升而*s.begin()-47
等效的表达式'2' - 47
被转换为类型int
并且等于3('2' - 47 => 50 - 47 == 3).
考虑到该调用s.begin()
返回迭代器,该迭代器指向字符串的第一个字符并*s.begin()
产生字符本身.