单片机判断语句与位运算的坑

news/2024/12/31 4:13:19/

一.问题描述

在我判断Oled的某点的值是否为1时,用到了如下判断语句

if(oled[x][y/8] &=1<<(y%8)

但是,当我将其改为如下的判断语句,代码却跑出BUG了

if((oled[x][y/8]&=1<<(y%8))==1)

二.原因分析

1.if语句理解错误

首选让我们看看下面的代码运行结果

#include <stdio.h>int main(){int a=-1;if(a) printf("此判断为真");elseprintf("此判断为假");
}

运行结果如下,实际上只要if判断语句中的值不为,判断即为
在这里插入图片描述

2.位运算不了解

首先我们回到开头,为什么将if判断语句改为是否与1相等就错了呢?在&运算中,是将值的目标位进行判断是否为1,如果该位为1则取1,否则取0.因为我知道目标位不相等直接取,所以我自然而然的认为相等则取1,则是错误的,即使相等也不为1.

三.体会总结

首先,开头的代码完整写法应为:

if((oled[x][y/8] &=1<<(y%8)!=0)

在使用if判断语句时,看括号内是否省略了!=0后缀,如果少了则要提醒自己一下有这个后缀.因为它并不是代表值为1时为


http://www.ppmy.cn/news/1159244.html

相关文章

“优化用户体验!前端开发者必备的防抖和限流技巧“

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 防抖与限流 &#x1f4d8; 防…

5.MidBook项目经验之MongoDB,Nacos,网关

1.医院查询接口 //系统1(signsignMD5加密后) ----> 系统2(数据库signMD5加密 相对比),好处在于网络之间传输不会得到直接得到sign 2.上传和删除科室信息 //map转jsonString,然后再转为对象//保存需要查数据库是否存在,存在修改,不存在添加//接口的包引入不对导致调用引包错误…

【初识Linux】:常见指令(2)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

【SA8295P 源码分析 (一)】06 - SA8295P XBL Loader 阶段 sbl1_main_ctl 函数代码分析

【SA8295P 源码分析】06 - SA8295P XBL Loader 阶段 sbl1_main_ctl 函数代码分析 一、XBL Loader 汇编源码分析1.1 解析 boot\QcomPkg\XBLLoader\XBLLoader.inf1.2 boot\QcomPkg\XBLDevPrg\ModuleEntryPoint.S:跳转 sbl1_entry 函数1.3 XBLLoaderLib\sbl1_Aarch64.s:跳转 sbl…

基于springboot实现民宿管理平台项目【项目源码+论文说明】

摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于民宿管理平台系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了民宿管理平台系统&#xff0c;它彻底改变了过…

TCP/IP(十八)TCP 实战抓包分析(二)TCP 三次握手和四次挥手

一 TCP三次握手和四次挥手 说明&#xff1a; 本文三次握手和四次挥手 无异常情况下的分析目标&#xff1a; 通过抓取和分析 HTTP 协议网络包,理解 TCP 三次握手和四次挥手的工作原理 ① 抓包和测试准备 1、 服务端事先执行 tcpdump 抓包 --> 172.25.2.100tcpdump -i b…

在Objective-C中使用ASIHTTPRequest发送HTTP请求并获取HTML内容

在网络爬虫开发中&#xff0c;发送HTTP请求并获取目标网站的HTML内容是一项常见任务。通过发送HTTP请求&#xff0c;我们可以模拟浏览器行为&#xff0c;访问网页并获取其中的数据。这些数据可以用于数据分析、信息收集、自动化测试等多种用途。为了实现这个目标&#xff0c;开…

【前端】Js

目 录 一.前置知识第一个程序JavaScript 的书写形式注释输入输出 二.语法概览变量的使用理解 动态类型基本数据类型 三.运算符算术运算符赋值运算符 & 复合赋值运算符自增自减运算符比较运算符逻辑运算符位运算移位运算 四.条件语句if 语句三元表达式switch 五.循环语句whi…