首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ If Then将不起作用/停止

C++ If Then将不起作用/停止
EN

Stack Overflow用户
提问于 2013-07-08 06:05:16
回答 1查看 115关注 0票数 1

我正在尝试做一个简单的Arduino代码,当光电池读数小于900时,它会将1加到CurrentNumber上,并将其显示在4位数的7段显示器上。问题是,即使读数超过1000,它也不会停止添加一个。

代码语言:javascript
运行
复制
void loop() {
 photocellReading = analogRead(photocellPin);  
 Serial.print("Analog reading = ");
 Serial.println(photocellReading);    // the raw analog reading
 photocellReading = 1023 - photocellReading;

 if(photocellReading << 10){
 CurrentNumber = CurrentNumber + 1;
 }

 displayNumber(CurrentNumber);
}
EN

回答 1

Stack Overflow用户

发布于 2013-07-08 06:15:33

你的问题出在你的if条件中:

代码语言:javascript
运行
复制
 if(photocellReading << 10){
     CurrentNumber = CurrentNumber + 1;
 }

您实际上要做的是:将photocellReading的位左移10 (相当于乘以2^10,也就是1024)。这很可能意味着,只有当photocellReading的值一开始就是0时,才会出现false。(我说最有可能是因为它取决于bits是否循环,但这并不完全相关)。

tl;dr您的代码在概念上等同于:

代码语言:javascript
运行
复制
if((photocellReading * 1024) != 0){
    CurrentNumber = CurrentNumber + 1;
}

我猜你想要做的是(考虑到你减去1023,恰巧是1024 - 1):

代码语言:javascript
运行
复制
if(photocellReading < 1024){ // again 1024 == 2^10
    CurrentNumber = CurrentNumber + 1;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17516857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档