这两个结果有什么区别?我见过这样的事情,但根本不明白。想象一下以下程序:
int main() {
vector<int> v(4);
for (int i = 0; i < 4; i++) v[i] = i;
cout << v[3] << endl;
cout << v[3] - '0';
return 0;
}
v [3]将返回3 并且v [3] - '0'将返回-45
我只是对此感到好奇。
答案 0 :(得分:2)
'0'
是字符零,其中包含ASCII码48.因此,v[3] - '0'
实际上是v[3] - 48
。
答案 1 :(得分:2)
答案是正确的,除了没有人提到原因,C ++整数提升要求char
表达式中int
类型被提升为v[3] - '0'
,类型不同(例如{{1} }},答案也会完全不同。
答案 2 :(得分:1)
如果你看ASCII表'0'等于十进制48. 3-48 = -45