#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。
最后兩句是為了防止執行時窗口一閃而過。一句就夠了
- 1 回答
- 0 關注
- 201 瀏覽
添加回答
舉報
0/150
提交
取消