为什么我的字符串在C ++中无法正确打印?

时间:2013-05-12 12:37:13

标签: c++

我有一个简单的程序如下:

#include <iostream>

using namespace std;

int main()
{
    int N;
    cout << "Enter N: " << endl;
    cin >> N;
    int acc = 0;

    cin >> acc;
    int min = acc;
    int max = acc;


    for (int i=1; i<N; i++) {
        int current;
        cin >> current;
        acc += current;
        if (current > max) {
            max = current;
        } else if (current < min) {
            min = current;
        }
    }

    cout << "Total: " + acc << endl;
    cout << "Max: " + max << endl;
    cout << "Min: " + min << endl;
    return 0;
}

我的输出被斩断如下

./stat
Enter N:
3
1
2
3

:
in:

我做错了什么?

3 个答案:

答案 0 :(得分:4)

在C ++中,字符串和数字上的运算符+的行为与您对高级语言的预期不同。

“Total:”例如是一个字符数组,如果a[10]是您的数组,a + 5是从a[5]开始的数组的切片。这称为pointer arithmetic

“总计:”在记忆中表示为'T'''t''a''''':''0,所以“总计:”+ 4是'l'':''' 0

答案 1 :(得分:2)

cout << "Total: " << acc << endl;
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;

答案 2 :(得分:0)

将输出行更改为:

cout << "Total: " << acc << endl;

使用&lt;&lt;运算符而不是+。