试图简化C中的if语句链

时间:2019-09-23 00:04:23

标签: c if-statement counter

对于一个项目,我需要简化4 if语句。

我似乎不知道该怎么做。

         if(apple == 1){
             one++;
         }
         if(apple == 2){
             two++;
         }
         if(apple == 3){
             three++;
         }
         if(apple == 4){
             four++;
         }

2 个答案:

答案 0 :(得分:3)

改为使用switch语句:

   switch(apple){
        case 1: 
            one++;
            break;
        case 2:
            two++;
            break;
        case 3:
            three++;
            break;
        case 4:
            four++;
            break;
        default:
            printf("No value!\n");
    }

或者,您可以执行以下操作来摆脱这四个变量(标记为:onetwothreefour):

position[apple]++;
printf("Data[%d]: %d", apple, position[apple]);

这是一个没有switch或if语句的数组,只是一个以apple变量作为索引确定位置的变量。

答案 1 :(得分:1)

这取决于您需要的具体程度。您的程序要达到的目标是什么?

您可以使用数组来表示变量onetwo等。例如:

foo[apple]++;

使用apple作为索引完全消除了对if语句的需要。

如果您确实需要使用if语句,则应该else if。通常,将互斥语句放入else if块中是一个好主意,因此代码不会每次都检查所有可能性。

if (apple == 1) {
  one++;
} 
else if (apple == 2) {
  two++;
}
//This way if apple == 1, we don't ever run the other if statement!