在 Arduino 中获取数组的最大值和最小值

arduinoarduino boardsarduino idearduino programming language

为了在 Arduino 中获取数组的最大值/最小值,我们可以运行一个简单的 for 循环。下面显示了两个实现。一个使用 Arduino 的 max() 和 min() 函数,另一个使用 > 和 < 运算符。

max 和 min 函数具有以下语法:max(a,b) 和 min(a,b),它们分别返回 a 和 b 中的最大值和最小值。

实现 1 − 使用 > 和 < 运算符

void setup() {
   // 将您的设置代码放在此处,运行一次:
   Serial.begin(9600);
   Serial.println();
   int myArray[6] = {1, 5, -6, 4, -2, 7};

   int maxVal = myArray[0];
   int minVal = myArray[0];
   Serial.print("myArray 的大小为:"); 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("数组的最大值是: "); Serial.println(maxVal);
   Serial.print("数组的最小值是: "); Serial.println(minVal);
}

void loop() {
   // 将您的主要代码放在此处,以便重复运行:
}

实现 2 −使用最大值和最小值

void setup() {
   // 将您的设置代码放在此处,运行一次:
   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("数组的最大值是:");
Serial.println(maxVal);
   Serial.print("数组的最小值是:");
Serial.println(minVal);
}

void loop() {
   // 将您的主代码放在此处,以便重复运行:
}

输出

两种情况下的串行监视器输出均为 −

如您所见,sizeof() 函数返回的是总字节数,而不是数组中的元素数(我使用的是将 int 存储在 4 个字节中的电路板)。因此,在 for 循环中,条件保持为 −

i < (sizeof(myArray) / sizeof(myArray[0]))

相关文章