【Arduino】关于“&”和“|” 运算-----多个参数运算结果异常的问题解决

一、记录原因

我在测我的红外接收器返回结果(结果是用数组来存的,下标与红外接收器的编号是一一对应的)。
出现的问题:不管我的红外接收口有无接收到信号, 我发现它一直会执行 if 下的语句。
即证明 if 里的语句不是我所想要的结果。所以我就做了个小测试。
解决在Arduino中,多参数运算& 或 | 时,需要把结果赋值给新的变量,否则容易出现异常。

在这里插入图片描述
在这里插入图片描述

二、测试代码

a.三个及以下参数(正常)

int n,m,a,b;//运算数

void setup() 
{
  Serial.begin(9600);  // The serial port is initialized with baud rate of 9600 bytes/SEC
}

void loop() 
{
   n = 1; m = 1; a = 0;
   Serial.print("n & m & a & b = ");
   Serial.println(n & m & a );
   if(n & m & a == 0)
    	Serial.println("you are in here");
   else
      Serial.println("you are fail in here");
}

在这里插入图片描述

b.四个及以上参数(异常)

int n,m,a,b;//运算数
  
void setup() 
{
  Serial.begin(9600);  // The serial port is initialized with baud rate of 9600 bytes/SEC
}

void loop() 
{
   n = 1; m = 1; a = 0; b = 1;
   Serial.print("n & m & a & b = ");
   Serial.println(n & m & a & b);
   if(n & m & a & b == 0)
    Serial.println("you are in here");
   else
    Serial.println("you are fail in here");
}

在这里插入图片描述

c.多个参数出现异常的解决方法

int n,m,a,b;//运算数
int result; //结果
void setup() 
{
  Serial.begin(9600);  // The serial port is initialized with baud rate of 9600 bytes/SEC
}

void loop() 
{
   n = 1; m = 1; a = 0; b = 1;
   Serial.print("n & m & a & b = ");
   Serial.println(n & m & a & b);
   result = n & m & a & b;
   if(result == 0)
    Serial.println("you are in here");
   else
    Serial.println("you are fail in here");
}

在这里插入图片描述

笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值