【问题标题】:Looking to simplify chain of if statements in C希望简化 C 中的 if 语句链
【发布时间】:2019-09-23 00:04:23
【问题描述】:

我需要将 4 个 if 语句简化为项目的几行代码。

我似乎不知道该怎么做。

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

【问题讨论】:

  • 可以使用数组:total[apple]++
  • 我不确定你还能从中削减多少。它尽可能简洁。也许使用 ?三元运算符,您可以将其简化为一行,但在我看来,这将很难阅读。或者一个 Switch 语句,但这不会减少任何
  • 至少添加else 语句。如果 apple==1 它不会是 ==2 等等。

标签: c if-statement counter


【解决方案1】:

改用 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 变量作为索引来确定位置的变量。

【讨论】:

  • 位置[苹果]=++位置[苹果];是多余的。增量将更新 position[apple] 所以你不需要分配它。
  • @jmq 我知道有人会问,但我仍然没有对此发表评论。改变它。
【解决方案2】:

这取决于您需要的具体程度。您的程序试图实现的目标是什么?

您可以使用数组来表示变量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!

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2013-12-02
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多