在C ++中设置2D数组中的值

时间:2016-01-07 12:10:58

标签: c++ arrays multidimensional-array

我试图创建一个2D数组,其中每一行将保存纹理/图像值(RGBA)(其中纹理的每一列将在一行中彼此相继放置)。我的纹理的基础将全部为白色,因此我将所有值设置为1.但是,当我打印出值时,它为0而不是1.为什么数据[layer] [x * m_Size + y + a] = 1 ;没有将该位置的值设置为1?

data = new int*[m_Size];
for(unsigned i = 0; i<m_Size; ++i){
    data[i] = new int[m_Size*m_Size*4];
}
for(unsigned layer=0; layer<m_NumLayers; layer++){  
    for (unsigned x = 0; x < m_Size; x++){
        for (unsigned y = 0; y < m_Size*4; y+=4){
                data[layer][x*m_Size+y+r] = 1;  
                data[layer][x*m_Size+y+g] = 1;  
                data[layer][x*m_Size+y+b] = 1;  
                data[layer][x*m_Size+y+a] = 1;  
                printf("in data: %f \n,",data[layer][x*m_Size+y+a]);
        }

    }

}

2 个答案:

答案 0 :(得分:1)

您的printf电话错误。您需要printf("in data: %d \n,",data[layer][x*m_Size+y+a]);而不是printf("in data: %f \n,",data[layer][x*m_Size+y+a]);,因为您要打印整数参数。

答案 1 :(得分:0)

你应该使用std :: cout而不是printf。你看,你在printf中搞乱了类型修饰符 - %f用于float%d用于int

改用cout:

#include <iostream>
...
std::cout << "in data: " << data[layer][x*m_Size+y+a] << std::endl;