在 Arduino 中獲取陣列的最大值和最小值
為了獲得 Arduino 中陣列的最大值/最小值,我們可以執行一個簡單的 for 迴圈。以下顯示了兩種實現方式。一種使用 Arduino 的 max() 和 min() 函式,另一種使用 > 和 < 運算子。
max 和 min 函式的語法如下:max(a,b) 和 min(a,b),它們分別返回 a 和 b 中的最大值和最小值。
實現 1 − 使用 > 和 < 運算子
void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); int myArray[6] = {1, 5, -6, 4, -2, 7}; int maxVal = myArray[0]; int minVal = myArray[0]; Serial.print("Size of myArray is: "); Serial.println(sizeof(myArray)); for (int i = 0; i < (sizeof(myArray) / sizeof(myArray[0])); i++) { if (myArray[i] > maxVal) { maxVal = myArray[i]; } if (myArray[i] < minVal) { minVal = myArray[i]; } } Serial.print("The maximum value of the array is: "); Serial.println(maxVal); Serial.print("The minimum value of the array is: "); Serial.println(minVal); } void loop() { // put your main code here, to run repeatedly: }
實現 2 − 使用 max 和 min
void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); int myArray[6] = {1, 5, -6, 4, -2, 7}; int maxVal = myArray[0]; int minVal = myArray[0]; Serial.print("Size of myArray is: "); Serial.println(sizeof(myArray)); for (int i = 0; i < (sizeof(myArray) / sizeof(myArray[0])); i++) { maxVal = max(myArray[i],maxVal); minVal = min(myArray[i],minVal); } Serial.print("The maximum value of the array is: "); Serial.println(maxVal); Serial.print("The minimum value of the array is: "); Serial.println(minVal); } void loop() { // put your main code here, to run repeatedly: }
輸出
兩種情況下的序列埠監視器輸出為 -
正如您所見,sizeof() 函式返回的位元組總數而不是陣列中的元素數(我正在使用將 int 儲存在 4 個位元組中的板)。因此,在 for 迴圈中,條件一直保持為 -
i < (sizeof(myArray) / sizeof(myArray[0]))
廣告