如何减少代码中 if 语句的数量?

问题描述 投票:0回答:1

我正在尝试用 C 语言为我的 FlipperZero 制作一个应用程序,一个自动答题器。但我在更改“选定”变量时遇到了太多滞后的问题。我不知道如何解决这个问题。

澄清一下,我并不是想做数学;我只是想做数学题。这些是按键输入的按键代码。

if (selected == 0) {
            Key_code = 0x04;
          }
          if (selected == 1) {
            Key_code = 0x05;
          }
          if (selected == 2) {
            Key_code = 0x06;
          }
          if (selected == 3) {
            Key_code = 0x07;
          }
          if (selected == 4) {
            Key_code = 0x08;
          }
          if (selected == 5) {
            Key_code = 0x09;
          }
          if (selected == 6) {
            Key_code = 0x0a;
          }
          if (selected == 7) {
            Key_code = 0x0b;
          }
          if (selected == 8) {
            Key_code = 0x0c;
          }
          if (selected == 9) {
            Key_code = 0x0d;
          }
          if (selected == 10) {
            Key_code = 0x0e;
          }
          if (selected == 11) {
            Key_code = 0x0f;
          }
          if (selected == 12) {
            Key_code = 0x10;
          }
          if (selected == 13) {
            Key_code = 0x11;
          }
          if (selected == 14) {
            Key_code = 0x12;
          }
          if (selected == 15) {
            Key_code = 0x13;
          }
          if (selected == 16) {
            Key_code = 0x14;
          }
          if (selected == 17) {
            Key_code = 0x15;
          }
          if (selected == 18) {
            Key_code = 0x16;
          }
          if (selected == 19) {
            Key_code = 0x17;
          }
          if (selected == 20) {
            Key_code = 0x18;
          }
          if (selected == 21) {
            Key_code = 0x19;
          }
          if (selected == 22) {
            Key_code = 0x1a;
          }
          if (selected == 23) {
            Key_code = 0x1b;
          }
          if (selected == 24) {
            Key_code = 0x1c;
          }
          if (selected == 25) {
            Key_code = 0x1d;
          }

我有一个.h 文件,每个字母都有一堆变量,但我不知道在这种情况下如何使用它。

说到这我就迷失了。我不知道如何开始优化它。

如果不是很明显,我是 C 语言新手,我只是为了制作 Flipper 应用程序而学习它。

c flipper-zero
1个回答
5
投票

如果你的代码实际上是这样继续的,那么这样做不是更容易吗:

int getKey(int selected) {
    return selected + 4;
}

如果没有,您可以使用数组或 switch 语句来优化此代码,这将使其更高效且更易于管理。我将向您展示如何使用数组来做到这一点。

首先,您可以创建一个数组将

selected
变量映射到
Key_code
值:

// Define an array to map selected values to Key_code values
uint8_t keyCodes[] = {
    0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
    0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d
};

// Check if selected is within a valid range
if (selected >= 0 && selected <= 25) {
    Key_code = keyCodes[selected];
} else {
    // Handle the case where selected is out of range
    // You can set a default value or take some other action.
}

使用此代码,您可以创建一个数组

keyCodes
,将
selected
的每个值映射到相应的
Key_code
。然后,在访问数组之前检查
selected
是否在有效范围内。如果
selected
超出范围,可以根据需要处理。

© www.soinside.com 2019 - 2024. All rights reserved.