[英]Setting values in a 2D array in C++
我嘗試創建一個2D數組,其中每行將保留一個紋理/圖像值(RGBA)(紋理的每一列將在一行中彼此放置)。 紋理的底數將全部為白色,因此我將所有值都設置為1。但是,當我打印出該值時,它是0而不是1。為什么data [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]);
}
}
}
您的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]);
,因為您要打印一個整數參數。
您應該使用std :: cout而不是printf。 您會看到,printf中的類型修飾符混亂了- %f
用於float
, %d
用於int
。
使用cout代替:
#include <iostream>
...
std::cout << "in data: " << data[layer][x*m_Size+y+a] << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.