C51定义的变量,默认值都是0吗?
时间:10-02
整理:3721RD
点击:
前几天看了一些其他书,用C编写的。定义的变量没有赋初值,直接就用到函数里面去了。
今天看了这个程序也是的。
大家注意看一下我定义的那几个变量。
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar temp,aa,bai,shi,ge; //大家看一下这几个变量,定义之后,刚开始并没有赋初值
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- sbit dula=P2^6;
- sbit wela=P2^7;
- int main()
- {
- void display(uchar bai,uchar shi,uchar ge);
- void delay(uint z);
- void init();
- init();
- while(1)
- {
- if(aa==20)
- {
- aa=0;
- temp++;
- if(temp==101)
- temp=0;
- bai=temp/100;
- shi=temp%100/10;
- ge=temp%10;
- }
- display(bai,shi,ge);
- }
- }
- void delay(uint z) //延时函数
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--)
- ;
- }
- void display(uchar bai,uchar shi,uchar ge) //显示函数,显示3位数字
- {
- dula=1;
- P0=table[bai];
- dula=0;
- wela=1;
- P0=0xfe;
- wela=0;
- delay(5);
- dula=1;
- P0=table[shi];
- dula=0;
- wela=1;
- P0=0xfd;
- wela=0;
- delay(5);
- dula=1;
- P0=table[ge];
- dula=0;
- wela=1;
- P0=0xfb;
- wela=0;
- delay(5);
- }
- void init() //初始化函数
- {
- // temp=0; 这个变量,同样也是这样。无论我赋值为0还是直接屏蔽掉,开发板都正常显示
- TMOD=0x01;
- wela=0;
- dula=0;
- TH0=(65535-50000)/256;
- TH0=(65535-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void timer()interrupt 1
- {
- TH0=(65535-50000)/256;
- TH0=(65535-50000)%256;
- aa++;
- }
之前学C的时候,定义的变量,基本都要赋值才能用。到了单片机,我叶迷糊了,为什么不赋初值,就可以使用?
定义的变量在第5行与第75行。就像那个temp变量,来个大神帮我解答一些,谢谢啦
试一下就知道了,很多c语言,现在都初始化为0
我就是试了啊,才不理解,因为之前学C的时候,基本都是先初始化再利用,但是现在看c51,居然不用初始化了。虽然我说的初始化是指的0,但是。还是理解不了
C也没有说要赋初值,只是你想用的时候只要是你需要的就行,
默认都是0.
这个是单片机C语言里的默认规范,一般不赋值均为零。例如:
uchar temp,aa = 1; //前者默认=0,后者赋值=1.
貌似c语言当中也不一定要赋初值吧
谢谢啦
自己也搞迷糊了
很多c语言的教程上 也没有说一定要给变量赋初值啊
好像是编译的时候就给默认赋值0了
不一定,,,,,,,,,,,,