一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1021|回复: 4
收起左侧

看看这段程序代码?

[复制链接]
发表于 2013-4-9 10:31 | 显示全部楼层 |阅读模式
在点阵屏翻页电子钟有这么一段程序代码,程序可以正常运行,但我一直没有理解语句的意思?
case 0:             //流动暂停显示
  if(switch_flag==1) {k=0;switch_flag=0;}
  for(i=0;i<8;i++)    //送往8个4094的数据.
  sendRbyte(a[date[k+i]-32][disrow]); //acsii-32 就是实际的字模位置
  sendR2byte(a[date[k+8]-32][disrow],offset);//实际这两句不用取反.为了仿真方便才加的.
在上面的程序中:当变量K=0;i=0;时,[date[k+i]-32]方括号内的值是多少了?这时数组a[date[k+i]-32][disrow]指向的是什么数据了?
 楼主| 发表于 2013-4-9 10:40 | 显示全部楼层
date数组中的数据如下:
unsigned char date[]=
{
' ',' ',' ',' ',' ',' ',' ',' ',         //开头8个空格
        '2','0',                                                 //21世纪
        '0','8',                                                 //年数据        No.10,11
        '~'+1,'~'+2,                                        //“年”
        '1','2',                                                //月数据         No.14,15
        '~'+3,'~'+4,                                        //“月”
        '0','6',                                                //日数据        No.18,19
        '~'+5,'~'+6,                                        //“日”
       
        ' ',                                                 //空格
       
        '~'+7,'~'+8,'~'+9,'~'+10,                //“星期”
        '?',' ',                                                //星期几        No.27,28
       
        ' ',                                                        //空格
       
        '*','*',                                                  //小时数据         No.30,31
        ':',                                                    //':'                 No.32
        '*','*',                                                  //分钟数据         No.33,34
        ':',                                                    //':'                No.35
        '*','*',                                                   //秒数据         No.36,37
       
        ' ',                                                        //空格
       
        ' ',' ','.',' ','~'+33,'C',        //温度                No.39,40,42
                                       
' ',' ',' ',' ',' ',' ',' ',' ',   //数组最大用到No.52                                                                          
};
a数组在ASCII.H文件中。
 楼主| 发表于 2013-4-9 11:19 | 显示全部楼层
当数组下标中出现负数时,数组会怎样执行呢?是不是会指向数组中第一个元素呢?
发表于 2013-4-9 11:40 | 显示全部楼层
空格的ASCII值就是32,所以当k=0i=0时date[k+i]取出的值是date[0]的值,就是32,再减去32,那么[date[k+i]-32]的值所是0了,这时取的就是a[0][disrow]的值。从date[]数组内容上看,不可能取出负值
 楼主| 发表于 2013-4-9 13:06 | 显示全部楼层
sblinux 发表于 2013-4-9 11:40 static/image/common/back.gif
空格的ASCII值就是32,所以当k=0i=0时date[k+i]取出的值是date[0]的值,就是32,再减去32,那么[date[k+i ...

谢谢!经你这么一指点,总算明白了。我还认为数组为负值了呢。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-1 07:29 , Processed in 0.058898 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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