找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2521|回复: 10
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主

//请问为什么在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;
        }
}

解惑图.png (30.25 KB, 下载次数: 127)

程序图

程序图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111874 发表于 2016-7-2 11:24 | 只看该作者
这个只变量,不看其他的其他端口设置
回复

使用道具 举报

板凳
ID:128908 发表于 2016-7-2 13:19 | 只看该作者
这是c语言标准的问题, 你编译的时候, 指定c99标准, 就可以不在开头声明了。
回复

使用道具 举报

地板
ID:128414 发表于 2016-7-2 13:35 | 只看该作者
哎呀  看不懂
回复

使用道具 举报

5#
ID:123289 发表于 2016-7-2 20:41 | 只看该作者
你给NUM付个值再试试?
回复

使用道具 举报

6#
ID:110895 发表于 2016-7-2 23:37 | 只看该作者
先定义,再使用,即可。
回复

使用道具 举报

7#
ID:129025 发表于 2016-7-3 10:50 | 只看该作者
你编译的时候, 指定c99标准, 就可以不在开头
回复

使用道具 举报

8#
ID:111874 发表于 2016-7-3 22:50 | 只看该作者
pynux 发表于 2016-7-2 13:19
这是c语言标准的问题, 你编译的时候, 指定c99标准, 就可以不在开头声明了。

还可以指定C99标准?
回复

使用道具 举报

9#
ID:111874 发表于 2016-7-26 09:58 | 只看该作者
我找到答案了,在C90标准中,具有块作用域的变量必须申明在块的开头。
回复

使用道具 举报

10#
ID:111874 发表于 2016-7-26 09:59 | 只看该作者
liuyimao485812 发表于 2016-7-2 23:37
先定义,再使用,即可。

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

使用道具 举报

11#
ID:134949 发表于 2016-7-26 10:41 | 只看该作者
按规矩来就行了嘛,别管那么多
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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