[AVR单片机] 谁来解释一下AVRGCC为什么这样编译?算个BUG不?

[复制链接]
3192|5
 楼主| 一级菜鸟 发表于 2007-1-26 16:26 | 显示全部楼层 |阅读模式
int main()
{
    unsigned char Temp[5];

    while(1)
    {    
        Temp[0]=013;
        Temp[1]=13;
        Temp[2]=015;
        Temp[3]=15;
    }

}

编译结果:

9:                Temp[0]=013;
+00000039:   E08B        LDI     R24,0x0B         Load immediate
+0000003A:   8389        STD     Y+1,R24          Store indirect with displacement
10:               Temp[1]=13;
+0000003B:   E08D        LDI     R24,0x0D         Load immediate
+0000003C:   838A        STD     Y+2,R24          Store indirect with displacement
11:               Temp[2]=015;
+0000003D:   E08D        LDI     R24,0x0D         Load immediate
+0000003E:   838B        STD     Y+3,R24          Store indirect with displacement
12:               Temp[3]=15;
+0000003F:   E08F        LDI     R24,0x0F         Load immediate
+00000040:   838C        STD     Y+4,R24          Store indirect with displacement
+00000041:   CFF7        RJMP    PC-0x0008        Relative jump



常量的写法,013居然和13不一样??看不懂了
zlei 发表于 2007-1-26 19:08 | 显示全部楼层

哎呀

回去补习一下C语言,C语言里面013是8进制表示,呵呵!
zsmbj 发表于 2007-1-26 21:25 | 显示全部楼层

呵呵!名同其人。

hotpower 发表于 2007-1-26 21:46 | 显示全部楼层
 楼主| 一级菜鸟 发表于 2007-1-27 07:53 | 显示全部楼层

哈,还真的菜到一定程度了:)

saystar 发表于 2007-1-29 21:15 | 显示全部楼层

基本上你的软件数据前面不要加0

0x--是16进制
--是十进制
(八进制最好不要用,容易误导)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

1674

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部