编程中,对于有些变量,可以不赋初值,但有些变量,一定要赋初值,如果没有赋初值,就会出现错误,如果事先有所了解还好,知道查变量初值是不是没有赋值,如果没有这方面的经验,可能要排查好久才能查出故障,有时甚至查不出故障。如下面这段单片机程序:
#include <reg52.h> #define uchar unsigned char sbit rs=P3^5; sbit rw=P3^6; sbit E=P3^7; //================================ void delay(int ii){int i;for(i=0;i<ii;i++);} //------------------------------- void LM1602_write(uchar dat,char cd) {E=0;rw=0;rs=cd; P0=dat; E=1;delay(5);E=0; } //-------------------------------- void Putstr(char *str) {int i; while(str[ i]!=0){LM1602_write(str[ i],1);i++;delay(50);}
} //=============================== main() {
LM1602_write(0x38,0);
LM1602_write(0x0f,0);
delay(50); Putstr("Hello MCU!");Putstr("12345");
while(1); }
程序原意要在液晶显示器上显示出两个字符,但运行结果如下。 可以看出不如预期,这是因为变量Putstr(char *str)的变量i没有赋初值,如果改成这样就不会出现以上情况。 void Putstr(char *str) {int i=0; while(str[ i]!=0){LM1602_write(str[ i],1);i++;delay(50);}
} 此时运行情况如下:
程序运行达到预期。所以象这种变量大家要记得赋初值。 |