如何通过避免 if-else 条件来提高当前代码的效率?

How can I make my current code efficient by avoiding if-else conditions?

我使用 4 位 7 段显示器来显示数字。我有一些函数在 7 段上显示一些 letter/digit,例如:

zero() // displays 0 on the 7-segment.
one() // displays 1 on the 7-segment.
two() // displays 2 on the 7-segment.
...

现在我有一个数字(比如 1435)要显示在 7 段显示器上。我目前的算法如下:

  1. 从数字 1435 中提取单个数字(将数字分隔为 1、4、3、5)。 sds

    • 1会显示到7段的第1位
    • 4会显示到7段的digit2。
    • 3会显示到7段的第3位
    • 5会显示到7段的第4位
  2. 为了显示这些单独的数字,我使用 'ten' if-else 条件如下:

    • 如果要显示的数字== 0 -> 运行函数zero();否则
    • 如果要显示的数字== 1 -> 运行函数one();否则
    • 如果要显示的数字== 2 -> 运行函数two();
    • ...
    • ...
    • ...

所以这个实现(对于数字 1435)要打印 运行s 几个 if-else 检查。

问题编号 2:此实现效率低下,因为当我需要 increment/decrement 那个数字(1435 到 1436 然后到 1437 等等......)时,这个数字if-else 检查的数量也发生了变化,因此数字的变化 不平滑 。这意味着“0”是 if-else 检查中的第一个,因此它会快速显示。另一方面,'9' 是 if-else 检查中的最后一个,因此它在显示之前必须经过十次检查。这使得实现速度变慢,因为要显示的数字从 0 增长到 9。如何实现来解决这两个问题?

提前致谢。

您可以在 table 中使用指向函数的指针:

typedef void (*func)(); // type for functions
func functions[] = { zero, one, two, three, ... }
functions[3](); // example, will call three()

您必须提取所需的数字并将其用作 table 中的索引...