在c ++中初始化整数列表

时间:2013-04-28 18:43:30

标签: c++

我需要将32位整数放入列表中。问题是,我似乎无法正确填写该列表。

实施例。我需要从中得到:01000100011100111111000000000000

list[0]=0list[1]=1list[2]=0list[3]=0等。

这个号码是通过标准输出给我的整数。

以下是我的观点:

int binary;
cin << binary;
int *list = new int [32];
for (int i = 31; i >= 0; i--) {
    list[i] = binary % 10;
    binary /= 10;
}
for (int i = 0; i < 32; i++) {
    cout << list[i];
    cout << endl;
}

让我知道我做错了什么。

4 个答案:

答案 0 :(得分:4)

以下循环导致越界数组访问:

for (int i = 4; i >= 0; i--) {
    list[i] = ...

list的元素从0到3编号。

此外,以下内容如下:

list[i] = binary % 2;
binary /= 10;

这两个数字应该都是2或两者都是10

答案 1 :(得分:2)

这部分: int *list = new int [4];创建一个从0到3索引的数组,并且您稍后尝试访问列表[4]。

答案 2 :(得分:1)

你应该除以2并从索引开始为3

for(i=3;i>=0;i--)
{
    list[i]=binary%2;
    binary/=2;
}

这是正确的

答案 3 :(得分:1)

使用std::bitset

#include <bitset>
int main() {
    std::bitset<32> bits("01000100011100111111000000000000");
}