不确定这段代码是做什么的

时间:2010-12-16 15:36:18

标签: c++

这两个结果有什么区别?我见过这样的事情,但根本不明白。想象一下以下程序:

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

我只是对此感到好奇。

3 个答案:

答案 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