当前位置:网站首页>【Arduino】关于“&”和“|” 运算-----多个参数运算结果异常的问题解决
【Arduino】关于“&”和“|” 运算-----多个参数运算结果异常的问题解决
2022-08-03 05:14:00 【与太阳有关_】
一、记录原因
我在测我的红外接收器返回结果(结果是用数组来存的,下标与红外接收器的编号是一一对应的)。
出现的问题:不管我的红外接收口有无接收到信号, 我发现它一直会执行 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");
}

笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。
边栏推荐
猜你喜欢
随机推荐
pta a.1030的dijkstra+DFS方法
Makefile介绍
7.21[日常]
NotImplementedError: file structure not yet supported
动态调整web系统主题? 看这一篇就够了
如何不耍流氓的做运维之-SHELL脚本
-钞票兑换-
下拉框数据字典应用案例
web安全-SSTI模板注入漏洞
【三子棋】7.25
-查找数-
快速上手 Mockito 单元测试框架
-角谷猜想-
【特征选取】计算数据点曲率
玩转Markdown(2) —— 抽象语法树的提取与操纵
Flask的简单介绍及使用方法简介
7.15(6)
idea uses @Autowired annotation to explain the reasons and solutions
二叉树的合并[C]
ModelArts第二次培训








