0

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

#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:

我究竟做错了什么?

4

3 回答 3

4

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

"Total:" 例如是一个字符数组,如果a[10]是你的数组,a + 5就是数组的切片,从a[5]. 这称为指针算术

"Total:" 在内存中表示为 'T' 'o' 't' 'a' 'l' ':' ' ' 0,所以 "Total:" + 4 就是 'l' ':' ' ' 0。

于 2013-05-12T12:44:50.127 回答
2
cout << "Total: " << acc << endl;
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;
于 2013-05-12T12:39:58.707 回答
0

将输出行更改为:

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

使用 << 运算符而不是 +。

于 2013-05-12T12:40:41.167 回答