數值問題請教-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1876|回复: 1

[未解决] 數值問題請教

[复制链接]
发表于 2021-8-17 16:44 | 显示全部楼层 |阅读模式
char test1[3]={'O','K','A'};
char test2[3]={'O','K','B'};
char test3[3]={'O','K','C'};

char test4[3]={'O','K','D'};

void getData() {

int a=5;
int i=0,x=0,y=0,z=0,f=0,w=0;
    if ( radio.available() )//如果通道裡有資料
    {
        radio.read( &dataReceived, sizeof(dataReceived) );//讀取資料
        newData = true;
        for(i=0;i<a;i++)
        {
            if(dataReceived[i] == test1[i])//比對回傳值
            {
              w++;
            }
            if(dataReceived[i] == test2[i])
            {
              x++;
            }
            if(dataReceived[i] == test3[i])
            {
              y++;
            }
            if(dataReceived[i] == test4[i])
            {
              z++;
            }

         }
//////////////////
當if(dataReceived[i] == test1[i])
            {
              w++;
            }時 w的數值會是5
但走其他路徑時x,y,z出來的值都是3?

发表于 2021-8-17 18:21 | 显示全部楼层
你越界访问了。数组test1234都只有3个元素,你for循环里访问test[3]和test[4]干啥玩意。数组dataReceived和test越界访问得到的值碰巧一样,所以wxyz数值偏大。好好补基础去
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 02:32 , Processed in 0.069774 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表