什么在核心C更有效?切换/如果声明?

Ror*_*man -1 c performance if-statement case switch-statement

注意:谢谢你告诉我,无论我怎么写,这都会毫无保留,我问的原因是因为它与我的大学任务类似,我想让我的讲师开心,是否有更"可读"代码或更好的东西,这将使我的讲师更快乐或这个代码是好的,而不是"低效".

我有一个关于我应该如何编写代码的问题,基本上我有一个switch语句,用于将char更改为特定的char,具体取决于它所处的内容.但是只有当亚麻布是一个奇数时才会改变(从0开始,所以每第二行都会选择一个新的字符).目前我的代码是......

int linenumber;
char zone = UNKNOWN;

  for (linenumber = 0; linenumber < 21; linenumber++) {

     switch (linenumber) {
        case (1):
           zone = 'a';
           break;

        case (3):
           zone = 'b';
           break;

        case (5):
           zone = 'c';
           break;

        case (7):
           zone == 'd';
           break;

        case (9):
           zone = 'e';
           break;

        case (11):
           zone = 'f';
           break;

        case (13):
           zone = 'g';
           break;

        case (15):
           zone = 'h';
           break;

        case (17):
           zone = 'i';
           break;

        case (19):
           zone = 'j';
           break;

        if (linenumber % 2 == 0) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于交换仅在每第二种情况下发生,因此编写if语句(例如....)会更有效.

if (linenumber % 2 == 1) {
   switch.....
}
Run Code Online (Sandbox Code Playgroud)

把switch语句放在里面...只是想知道在这种情况下额外的if语句是否会更高效或更低效.

提前致谢!

gna*_*729 6

你问的是错误的问题.您要做的是称为微优化.它节省了纳秒.通常它不会,因为你三年前学到的东西今天可能是错的.真正的程序员不关心纳秒,他们会获得至少可以节省微秒的巨大胜利.

说真的,编写最易读的代码.在这种特殊情况下,switch语句非常难以理解.

有关严肃的优化问题,请查看Michael Kohne的答案.如果您不能使用分析器,那么速度不是很重要.