跳到主要内容

使用取模与累加制造一个环

最近在做一个 gui 项目,里面有很多切换模式的按钮,为了测试我需要在不同模式间循环切换。

使用多个判断语句能够完成此项任务,但选择分支的增加降低了程序的性能,尽管这点性能对现代的处理器而言微不足道,可一次预测失败的负载却常常让人不能接受。

基于以上原因,我使用模运算加查表法来完成模式的循环切换工作,避免了条件分支的使用。

关键代码如下:

    char *hair_mode[] = {
"high", "middle", "low",
};

............
{
static int current_status = 0;

current_status = (current_status + 1) % (sizeof(hair_mode) / sizeof(hair_mode[0]));

display_status(hair_mode[current_status]);
}

这算是模运算的一个应用。