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