写了一个程序,发现把for(a=8;a>0;a--)改成for(a=0;a<8;a++)后显示不正常了。
下面是程序的其中一段
void write_byte(uchar dat)
{
uchar a;
ACC=dat;
RST=1;
for(a=8;a>0;a--) //这里
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>>1;
}
}
然后在KEIL里写了个简单的程序想验证,结果发现执行完成后aa=0而bb=8
void main()
{
unsigned char ii,aa,jj,bb;
aa=0; bb=0;
for(ii=0;ii<8;ii++)
aa++;
for(jj=8;jj>0;jj--)
bb++;
}
求各位指点,是不是我犯了什么低级错误还是基础知识不扎实导致弄错了。
PS:最近用学习板试程序,老是卡壳,好郁闷,恳请各位大大开导
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在使用变量之前请先”初始化“。因为,未初始化的变量,其值是”不确定“的。
”不确定“的意思是指可能是任何值。
初始化和赋值操作符”=“的区别:
在声名一个变量时,”同时“给他赋与一个合法的值,这是初始化。
先声名一个变量,”过后“再给他赋与一个合法的值,这是赋值。
以上特点是由 c 语言的语义所决定的。c 标准中并不要求编译器对变量自动初始化。
如果对一个未初始化的变量赋值,也就是对一”不确定的值“赋值。
每个变量都指向一个内存地址,如果说这个变量的值”不确定“,也就是说这个内存地址中的值可能是有作用的也可能是没作用的。如果这个值是有其他作用的,你如果对他赋值,那会发生什么
一周热门 更多>