网站添加链接,罗田建设局网站,昆明官网优化公司,企查查官网查询一.问题描述
在我判断Oled的某点的值是否为1时,用到了如下判断语句
if(oled[x][y/8] 1(y%8)但是,当我将其改为如下的判断语句,代码却跑出BUG了
if((oled[x][y/8]1(y%8))1)二.原因分析
1.if语句理解错误
首选让我们看看下面的代码运行结果
#inc…一.问题描述
在我判断Oled的某点的值是否为1时,用到了如下判断语句
if(oled[x][y/8] 1(y%8)但是,当我将其改为如下的判断语句,代码却跑出BUG了
if((oled[x][y/8]1(y%8))1)二.原因分析
1.if语句理解错误
首选让我们看看下面的代码运行结果
#include stdio.hint 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时为真