求高手解答单片机C语言中while(--a)和while(a--)的区别?

2024-12-15 17:56:12
推荐回答(5个)
回答1:

while(--a)等价于先将a减小1,再判断它是否为0 。 while(a--)先判断它的逻辑值是否为0,再减小1.
比如a=2的话, 第一个循环1次。因为,--a=1, 第二次 --a=0,为假了。
第二个循环2次。因为,先判断2 ,为真,再将a减小得1. 再判断a==1,为真,再将a减小1,再判断a==0,不循环了。

回答2:

  1. 区别在于判断while之前减还是之后减,也就是在相同的a初始值情况下,--a会比a--少循环一次,因为当a=1的时候,第一个--a就会退出循环,第二个不会。

  2. while和for语句有区别,就是在循环体内,无论你使用两者哪个,a在进入循环体都已经发生了-1,也就是说,a相等情况下,两种进入循环后的数值相同,就是循环差了一次。

回答3:

这里牵扯到的就是--a和a--的区别呢。这么说吧。假如b=--a;程序执行分两步,第一步a = a-1;第二步b=a;而如果是b=a--;则第一步和第二步反过来执行。假如a=8;执行b=--a后a=b=7;执行b=a--后b=8,a=7;同样执行++时也是一样的道理

回答4:

一个是先减1,一个是后减1,其实在程序里没有多大差别。

回答5:

/************************************************************************

while(--a)和while(a--);看上去跟没有啥区别一样,其实区别很大,
先举个例子说明一下你就明白了。
a = 20
whie(--a)
{
............
}
第一步程序执行到这里会先执行--a = 19;为真执行内部语句。

a = 20
whie(a--)
{
............
}
第一步程序执行到这里会判断 a 值是否为真在执行 a = 20。在执行a-- = 19
自己可以在keil软件里面仿真一下。
*************************************************************************/