逻辑运算:我想轻松地进行逻辑运算

Posted

技术标签:

【中文标题】逻辑运算:我想轻松地进行逻辑运算【英文标题】:Logic Operations : I want to make Logic operations easily 【发布时间】:2015-12-28 22:57:17 【问题描述】:

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

 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)

但如你所知,它不起作用。

如何将此代码更改为更简单的形式?

【问题讨论】:

是什么让您认为存在更简单的形式? 【参考方案1】:

我支持@Beta - 你已经有了最简单的形式。但是,如果添加更多“匹配”值,您可能会发现 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 的成员资格(参见 this answer)。每个都有自己的优点和适用于您的实际问题 - “简单”是一个相对术语。

【讨论】:

【参考方案2】:

使用数组可能会很好。

#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;

【讨论】:

以上是关于逻辑运算:我想轻松地进行逻辑运算的主要内容,如果未能解决你的问题,请参考以下文章

简单地替代 JavaScript 中逻辑运算符的赋值运算符?

什么是算术运算?什么是关系运算?什么是逻辑运算?

python-逻辑运算和布尔值

2020寒假 编程学习 2.2

集合和逻辑运算

运算符