为了账号安全,请及时绑定邮箱和手机立即绑定

求指点这段程序的含义

求指点这段程序的含义

C
Helenr 2023-04-03 17:13:18
#include <reg52.H>#define unchar unsigned char#define uint unsigned int void zz();void delay(uint z);void dep(unchar a,unchar b,unchar c,unchar d,unchar bai,unchar f,unchar shi,unchar ge );unchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x38,0x40};unchar ge,shi,bai,qian,wan,baiwan;uint t1,sec,min,hour;void main(){ zz();t1=0;while(1){ ge=sec%10;shi=sec/10;bai=min%10;qian=min/10;wan=hour%10;baiwan=hour/10;dep(baiwan,wan,18,qian,bai,18 ,shi,ge);}}void dep(unchar a,unchar b,unchar c,unchar d,unchar bai,unchar f,unchar shi,unchar ge){  P2=0xfe;P0=table[a];delay(10);P2=0xfd;P0=table[b];delay(10);P2=0xfb;P0=table[c];delay(10);P2=0xf7;P0=table[d];delay(10);P2=0xef;P0=table[bai];delay(10);P2=0xDF;P0=table[f];delay(10);P2=0XbF;P0=table[shi];delay(10);P2=0x7f;P0=table[ge];delay(10);}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);}void zz(){TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;}void yy() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1++;if(t1%20==0){  sec++;if(sec>60){ sec=0;min++;if(min>60){ min=0;hour++;if(hour>24){  hour=0;}}}}}
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

首先,必须明白,凡是被static修饰的变量都会永久保存程序结束前的每一次更改,并且其在内存中是唯一的。
然后,代码创建了一个CDummy类,并在该类中声明了一个静态(static)的成员变量n,然后定义了构造函数CDummy()和析构函数~CDummy()。构造函数将在创建对象时被调用,析构函数在删除对象时调用。int CDummy::n=0;讲n初始化为0(这是不必要的,静态变量默认初始化为0,但是对每一个变量进行初始化时良好的编程习惯。)
主函数先创建了一个CDummy类的对象a,那么此时构造函数被调用,即n++,执行完该语句后n为1;接着主函数创建了一个对象数组b[5],即创建了5个CDummy类的对象,n++执行5次,此时n为6;同理,CDummy *c=new CDummy;用另一种方式创建了对象c,n再加1,为7,所以第一个输出是7,然后c被删除,析构函数被调用,n--,你变为6,第二个输出是6。
最后两句是为了防止执行时窗口一闪而过。一句就够了

查看完整回答
反对 回复 2023-04-05
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信