给出意外输出的基本int数组

时间:2018-05-12 14:52:26

标签: c++ arrays

#include <iostream>
#include <string>
using namespace std;

int num[3]{ 3, 5, 6, };
cout << num[3] << endl;

string y;
getline(cin, y);
return 0;
}

输出为-858993460

#include <iostream>
#include <string>
using namespace std;

int num[]{ 3, 5, 6, };
cout << num << endl;

string y;
getline(cin, y);
return 0;
}

输出004FFC48

但我希望我的输出为356.为什么我在上述两个代码示例中收到不同的输出?

1 个答案:

答案 0 :(得分:2)

阅读您的代码并回答我,y是否与num数组有任何关系? 当然不是,只是另一个变量。

int num[]{ 3, 5, 6, };中的另一个错误 _________________________________^__
删除,你只是说你的数组将有4个元素而你并不是说最后一个空格中有数字,所以编译器只是把垃圾放在那里然后你打印num变量空间,因为数组喜欢指针但不相同。
(建议,删除逗号并记住计算机按照从第1行到第N行的顺序进行指示)
< / p>

如果您想要输出356,则需要将int数据类型转换为char,因为string是一组字符。因此,制作自己的字符串函数

#include <iostream>
#include <string> // is ambiguous because iostream already have string
using namespace std;
// where is the main function?
int num[]{ 3, 5, 6, };
cout << num << endl;// this should be in a for statement at the end of the program because you output the proccesed values

string y; // container of chars
getline(cin, y); //why do you need this?
return 0;
}

修正:

#include <iostream>
using namespace std;

int main() {
    //just for printing the numbers
    int num[]{3, 5, 6};

    for (int i = 0; i < 3; i++)
        cout << num[i] << endl;

    return 0;
}