| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1427 人关注过本帖
标题:请教一个问题,谢谢大侠们
只看楼主 加入收藏
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:13 
请教一个问题,谢谢大侠们
如题,我要将一个变量赋值给数组,编译有警告
int main(void)
{   
//     char a[9];
      int b[10];
      char c;
      char d = 0;
   
      for(c=0;c<=10;c++)

    {
b[10]=ADCRead(0); //这里赋值好像有问题,ADCRead(0)是个变量,我要这个变量10次相加求平均值,下面的语句好像是有问题的,求教应该怎么写这段代码呢?
d = d + b[c];

}

  while (1)
    {
        
        printf("%f",d/10.0);
        
        
        
    }
   
2016-04-11 10:50
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:5 
b数组下标从0到9

未佩好剑,转身便已是江湖
2016-04-11 10:56
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:5 
错误肯定很多吧。首先你的ADCRead(0),是什么鬼?没看懂。
d=d+b[c],你的d是char型的,也就是字符。虽然说字符26个字母有的地方是可以当数字,但是你用来加法,不是用来大小写转换吧?为啥不用int
另外最后是不是还少个};其他逻辑方面的错误应该也有,没看太懂你的程序是准备要做什么呢?
你的数组下标越界了

[此贴子已经被作者于2016-4-11 10:59编辑过]

2016-04-11 10:57
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
b[10]=ADCRead(0);
应该是b[c]
另外下面的while(1)是什么目的?
2016-04-11 10:58
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
收藏
得分:0 
回复 2楼 alice_usnet
版主,如果写下标的话,ADCRead(0)这个变量就没用了,好比ADCRead(0)这个变量是读取某个数据的返回值,不是一个常量啊
2016-04-11 11:08
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
收藏
得分:0 
回复 3楼 wanglianyi1
ADCRead(0)是单片机测量某个通道的电压返回值,下标越界的意思是将 C<=10,改成C<9,这样吗?
2016-04-11 11:12
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
收藏
得分:0 
回复 4楼 grmmylbs
b[10]=ADCRead(0);
这个意思是将变量 ADCRead(0)的值赋值给数组b[10],赋值10次 然后求平均值,while是个死循环,一直打印平均值的意思
2016-04-11 11:15
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
你不是要求ADCRead(0) 10次的累加么?
直接这样也可以吧
 for(c=0;c<10;c++)
{
    d = d + ADCRead(0);
}
2016-04-11 11:17
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
收藏
得分:0 
回复 4楼 grmmylbs
版主,改了之后没有警告了,谢谢您,可是我用串口助手调试没有  printf 数据返回 是什么情况呢?

  
2016-04-11 11:22
mir_zhang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-11
收藏
得分:0 
#include <lpc11xx.h>
#include "LCD22.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>



#ifndef CONFIG_ENABLE_DRIVER_ADC
#define CONFIG_ENABLE_DRIVER_ADC    1
#endif

#include "adc.h"
#include "uart.h"

#define Open_ADC0



int main(void)
{   
//     char a[9];
      int b[10];
      char c;
      char d = 0;
   
        UART_init(115200);

         LCD_Initializtion();
        ADCInit(ADC_CLK);
      
      for(c=0;c<=9;c++)

    {
b[c]=ADCRead(0);
d = d + b[c];

}

  while (1)
    {
        
        printf("%f",d/10.0);
        
        
        
    }
}

可以了,0错误0警告 但是用串口助手没有返回值??这个怎么解,谢谢大家这么热心!
2016-04-11 11:27
快速回复:请教一个问题,谢谢大侠们
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016726 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved