找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3048|回复: 10
收起左侧

请大神们解惑,关于C语言的问题

[复制链接]
ID:111874 发表于 2016-7-2 11:20 | 显示全部楼层 |阅读模式

//请问为什么在main函数中声明变量一定要放在最前,详细的疑问请看程序
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[]={
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,
0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71
                                   };
void main(void)
{
        uchar num;//num变量放在这里申明,程序不会出错,放在下面注释的位置就会出错???请大神解释下
        wela = 1;
        P0 = 0xfe;
        wela = 0;
        //uchar num;///////num变量如果是在这里申明;那么程序就会出错,请问我们在申明main函数中的变量的时候为什么一定要放在第一位?
        P3 = 1;
       
        while(1)
        {
                if(key1 == 0)
                {
                        num++;       
                }
                dula = 1;
                P0 = table[num];
                dula = 0;
        }
}

程序图

程序图
回复

使用道具 举报

ID:111874 发表于 2016-7-2 11:24 | 显示全部楼层
这个只变量,不看其他的其他端口设置
回复

使用道具 举报

ID:128908 发表于 2016-7-2 13:19 | 显示全部楼层
这是c语言标准的问题, 你编译的时候, 指定c99标准, 就可以不在开头声明了。
回复

使用道具 举报

ID:128414 发表于 2016-7-2 13:35 | 显示全部楼层
哎呀  看不懂
回复

使用道具 举报

ID:123289 发表于 2016-7-2 20:41 | 显示全部楼层
你给NUM付个值再试试?
回复

使用道具 举报

ID:110895 发表于 2016-7-2 23:37 | 显示全部楼层
先定义,再使用,即可。
回复

使用道具 举报

ID:129025 发表于 2016-7-3 10:50 | 显示全部楼层
你编译的时候, 指定c99标准, 就可以不在开头
回复

使用道具 举报

ID:111874 发表于 2016-7-3 22:50 | 显示全部楼层
pynux 发表于 2016-7-2 13:19
这是c语言标准的问题, 你编译的时候, 指定c99标准, 就可以不在开头声明了。

还可以指定C99标准?
回复

使用道具 举报

ID:111874 发表于 2016-7-26 09:58 | 显示全部楼层
我找到答案了,在C90标准中,具有块作用域的变量必须申明在块的开头。
回复

使用道具 举报

ID:111874 发表于 2016-7-26 09:59 | 显示全部楼层
liuyimao485812 发表于 2016-7-2 23:37
先定义,再使用,即可。

我找到答案了,在C90标准中,具有块作用域的变量必须申明在块的开头。谢谢了
回复

使用道具 举报

ID:134949 发表于 2016-7-26 10:41 | 显示全部楼层
按规矩来就行了嘛,别管那么多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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