当前位置:网站首页>【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");
}

笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。
边栏推荐
猜你喜欢
随机推荐
数据分析 第一篇
Kaggle(四)Scikit-learn
生活原则。
MySQL 优化建议详解
Makefile 遍历子目录模板
MySQL 唯一索引 UNIQUE KEY 会导致死锁?
【按位取反,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用,结构体】操作符后续+表达式求值(上)
亲身分享一次 字节跳动 真实面试经历和面试题
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
-最低分-
建造者模式(Builder Pattern)
私有变量(private) 【详细+易懂】
背压机制
陆运信息系统——班列项目总结(一)
vim命令
对页码的使用总结
web安全-SSTI模板注入漏洞
令人愉快的 Nuxt3 教程 (一): 应用的创建与配置
【函数与递归】7.19
Makefile语法








