簡體   English   中英

如何在 C++ 中初始化然后將值分配給 uint32_t 數組

[英]How to initialize and then later assign values to a uint32_t array in C++

我在 Arduino 中使用 C++ 創建隨機 uint32_t 值(顏色)的patternArray ,並將這些顏色與用戶通過預定義colorArray按鈕輸入的顏色進行比較。 問題是我需要在分配隨機值之前初始化一個隨機種子,但我不知道正確的語法(當我似乎得到正確的語法時,我的顏色比較評估失敗)。

uint32_t colorRed = pixels.Color(255, 0, 0);
uint32_t colorGreen = pixels.Color(0, 150, 0);
uint32_t colorBlue = pixels.Color(0, 255, 255);
uint32_t colorYellow = pixels.Color(255, 255, 0);

uint32_t colorArray[4] = {colorRed, colorGreen, colorBlue, colorYellow};
uint32_t patternArray;

void setup() {

  randomSeed(millis());
  patternArray[4] = {colorArray[random(4)], colorArray[random(4)], colorArray[random(4)], colorArray[random(4)]};
}

void loop(){
  if (colorArray[0] == patternArray[0]) { ... }
}

這會引發錯誤:

invalid types 'uint32_t {aka long unsigned int}[int]' for array subscript

我如何正確執行此操作,以便比較不會失敗

在 C++ 中,您不能分配給數組; 你可以初始化它,即在它的定義過程中。 所以初始化一個數組如下是可以的,

uint32_t colorArray[4] = {colorRed, colorGreen, colorBlue, colorYellow};

而分配給數組不是:

uint32_t patternArray;
patternArray = { 1,2,3,4 };

在您的代碼中,您可以改為分配給數組成員:

void setup() {

  randomSeed(millis());
  patternArray[0] = colorArray[random(4)];
  patternArray[1] = colorArray[random(4)];
  patternArray[2] = colorArray[random(4)];
  patternArray[3] = colorArray[random(4)];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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