打印
[应用相关]

C语言使用完整的条件语句

[复制链接]
425|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-1-29 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




在使用判断语句的时候,我们尤其要注意判断条件的完整性,我们许多工程师都熟悉简单的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 比较多的情况,有些编译器会主动优化,这时候就不必考虑命中率的问题了。

使用特权

评论回复
沙发
drer| | 2024-2-1 16:24 | 只看该作者
有些是总结不到位的 就不需要那么完整

使用特权

评论回复
板凳
tpgf| | 2024-2-1 16:33 | 只看该作者
如果分支情况比较多的话 考虑使用嵌套判断吗

使用特权

评论回复
地板
wiba| | 2024-2-1 17:15 | 只看该作者
如果不写入else  不就是不会判断别的条件了吗 这样 也不会造成资源浪费啊

使用特权

评论回复
5
kxsi| | 2024-2-1 17:33 | 只看该作者
case情况比较多的话 编译器会如何进行优化呢

使用特权

评论回复
6
qcliu| | 2024-2-1 18:04 | 只看该作者
这个不一定非要使用完整的  根据具体情况来看吧

使用特权

评论回复
7
coshi| | 2024-2-1 21:38 | 只看该作者
最好还是有一个else 或者是default语句比较好

使用特权

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

本版积分规则

212

主题

1449

帖子

4

粉丝