alieodong 发表于 2014-9-4 23:35:48

Arduino 中整型数组(int) 的一个bug 求高人解释

最近在写一个机器人的控制程序,在设计的过程中用到了二维数组,debug了一天发现一个改正不了的bug,望高手指教。
本人编程小白一个,会一点C和C++。。
废话不多说,先上代码:


int length={0};

void setup(){
Serial.begin(9600);
}

void setlength(){

int n,m;
for (n=1;n<=4;n++){
    for (m=1;m<=6;m++){
      length=1;
    }
}
}
void send(){   //we shall first print the arrray on the screen
int n,m;
for (n=1;n<=4;n++){
    for (m=1;m<=6;m++){
      Serial.print(length);
      Serial.print(" ");
    }
    Serial.println("");
}
delay(1000);
}
void loop(){
setlength();
send();
}

照常理来说打开串口监视器看到的应该是
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
然而诡异的事情出现了



最后两行亮瞎狗眼。。
走投无路的我把数据类型改成了 float

float length={0};

现在显示正常了



求大神指点!!
这段程序只是截取了一小部分,主程序有300+行,数组设计是用的整型的。
{:soso_e136:}

Super169 发表于 2014-9-5 00:02:54

本帖最后由 Super169 于 2014-9-5 00:06 编辑

程式可以執行, 已是你的好運了....

你知道int length是什麼意思嗎?

問題就在這裡:


for (n=1;n<=4;n++){
    for (m=1;m<=6;m++){
      length=1;
    }
}


你知道執行length=1; 及 Serial.print(length);   時, 當 n=4 或 m = 6 時有什麼後果嗎?

alieodong 发表于 2014-9-5 00:30:49

弄明白了,,自己数组没学好。。。。。

alieodong 发表于 2014-9-5 00:31:35

Super169 发表于 2014-9-5 00:02 static/image/common/back.gif
程式可以執行, 已是你的好運了....

你知道int length是什麼意思嗎?


明白了,自己查出来了。。。谢谢
页: [1]
查看完整版本: Arduino 中整型数组(int) 的一个bug 求高人解释