打印
[应用相关]

C语言避坑之使用完整的条件语句

[复制链接]
1233|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-5-24 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



在使用判断语句的时候,我们尤其要注意判断条件的完整性,我们许多工程师都熟悉简单的if else 语句,然而有一些工程师却没有注意到,不同的写法可能会浪费一些处理器的时间。比如:


if(value == 1U)
{

}

if(value == 0U)
{

}

if(value == 1U)
{

}
else
{

}


在第一种写法中,处理器会去判断两次,然后根据判断结果进行分支运行,但是如果我们写成第二种写法,处理器只需要判断一次就可以了。尤其是这种判断在一个大循环内部,这将浪费我们很多处理器时间。

另外为了代码具备更清晰的可读性,我们应该让 if else 成对出现,并且都是用{}把程序分割开来,这样也避免我们在调试的时候复制粘贴出现一些错误,从而影响我们调试和解决问题的进度。

#include <stdio.h>

int main() {
    int choice;

    // 提示用户输入数字
    printf("Enter a number (1-3): ");
    scanf("%d", &choice);

    // 使用 switch 语句根据用户输入执行不同的操作
    switch (choice) {
        case 1:
            printf("You chose option 1.\n");
            // 执行操作1的代码
            break;

        case 2:
            printf("You chose option 2.\n");
            // 执行操作2的代码
            break;

        case 3:
            printf("You chose option 3.\n");
            // 执行操作3的代码
            break;

        default:
            printf("Invalid choice. Please enter a number between 1 and 3.\n");
            // 处理无效选择的代码
            break;
    }

    return 0;
}

如果判断分支比较多,一定是用 swich case 语句来代替 if else。道理是相同的,一定要完整且用{}将程序段分隔好。同时要注意,如果我们对分支的命中率有一定的前瞻性,那么我们最好把命中率比较高的分支放在前面。

对于 case 比较多的情况,有些编译器会主动优化,这时候就不必考虑命中率的问题了。

使用特权

评论回复
沙发
米多0036| | 2024-6-11 15:56 | 只看该作者
减少判断次数可以将多个 if 判断合并成 if-else 结构,减少重复判断。

使用特权

评论回复
板凳
米多0036| | 2024-6-11 16:00 | 只看该作者
使用 switch-case:当分支较多时,使用 switch-case 语句可以提高代码可读性和执行效率。

使用特权

评论回复
地板
jf101| | 2024-6-23 14:18 | 只看该作者
应该让 if else 成对出现,并且都是用{}把程序分割开来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

1446

帖子

4

粉丝