神的随波逐流中 2022-04-26 18:19 采纳率: 100%
浏览 57
已结题

变量的定义位置不对为啥会报错(不是函数内外的变量,在主函数下面的定义)

问题遇到的现象和发生背景

我定义了一个无符号变量i,并赋值为0,但是位置在主函数第三句就报错,放在第一句和定义为全局变量就没错我想知道原因

问题相关代码,请勿粘贴截图
#include<reg51.h>
sbit P10=P1^0;
void init()
{
    TMOD=0x01;
    TH0=0x00;      //定义初值为0
    TL0=0x00;      //定时为65536us即为65.536ms<65.790ms=1/7.6/2ms
    EA=1;
    ET0=1;
    TR0=1;
}
void main()
{
    //定义在这儿就没事
    init();    
    P10=1;
    unsigned int i=0; //在这儿就报错
    while(1)
     {    
        if(TF0==1)
        {
            TF0=0;
              TH0=0x00;
            TL0=0x00;
            i++;
            if(i==2)
            {
              i=0;
              P10=~P10;
            }        
        }    
     }
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

LED灯以7.6Hz的频率闪烁,这是我的程序达到的效果

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-04-26 18:28
    关注

    c89标准里,函数内的变量定义必须在函数内的所有可执行代码之前。
    如果用C99标准,只需要在使用之前定义就行。keil默认是C89标准。
    我记得C语言教材一般都是按C89标准讲的吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月27日
  • 已采纳回答 4月26日
  • 修改了问题 4月26日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳