我有一个简单的程序如下:
#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:
我做错了什么?
答案 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;运算符而不是+。