簡體   English   中英

在C ++中的2D數組中設置值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM