逻辑运算:我想使逻辑运算容易

Logic Operations : I want to make Logic operations easily

本文关键字:逻辑运算      更新时间:2023-10-16

我想知道如何减少逻辑操作代码。

 int a;
 cin >> a;
 if( a == 1 || a == 3 || a == 5)
    printf("%d", a);

像这样修改上面的代码

 int a;
 cin >> a;
 if(a == (1 || 3 || 5) )
    printf("%d", a)

但你知道,它不起作用。

如何将此代码更改为更容易的形式?

我是@Beta -你已经有了最简单的形式。然而,如果您添加更多的"match"值,您可能会发现switch语句提供了一个更易于维护的结构:

int a;
cin >> a;
switch ( a )
{
   case 1:
   case 3:
   case 5:
        printf("%d", a);
        break;
     default:
        // do nothing - not needed, but good habit
  }

还有许多其他方法可以实现这一点-例如,您可以在set中查找a的成员关系(参见此答案)。每一种方法都有自己的优点和适合你的现实问题——"简单"是一个相对的术语。

使用数组可能比较好。

#include <cstdio>
#include <iostream>
using std::cin;
int main(void){
    int a;
    cin >> a;
    {
        static const int to_match[3] = {1, 3, 5};
        bool yes = false;
        for (size_t i = 0; i < sizeof(to_match) / sizeof(to_match[0]); i++) {
            if (a == to_match[i]) {yes = true; break;}
        }
        if(yes)
            printf("%d", a);
    }
    return 0;
}