Глядя, чтобы упростить цепочку операторов if в C - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно упростить 4 оператора, если что-то всего несколько строк для проекта.

Кажется, я не могу понять, как это сделать.

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

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Вместо этого используйте оператор switch:

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

В качестве альтернативы вы можете сделать что-то подобное, чтобы избавиться от этих четырех переменных (помеченных: one, two, three, four):

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

Это один массив без операторов switch или if, только одна переменная, в которой позиция определяется с вашей переменной apple в качестве индекса.

1 голос
/ 23 сентября 2019

Зависит от того, насколько конкретно вам это нужно.Какую цель пытается достичь ваша программа?

Вы можете использовать массив для представления переменных one, two и т. Д. Например:

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!
...