求高手解答单片机C语言中while(--a)和while(a--)的区别?
发布网友
发布时间:2022-05-30 15:42
我来回答
共4个回答
热心网友
时间:2023-10-19 07:17
1.
区别在于判断while之前减还是之后减,也就是在相同的a初始值情况下,--a会比a--少循环一次,因为当a=1的时候,第一个--a就会退出循环,第二个不会。
2.
while和for语句有区别,就是在循环体内,无论你使用两者哪个,a在进入循环体都已经发生了-1,也就是说,a相等情况下,两种进入循环后的数值相同,就是循环差了一次。
热心网友
时间:2023-10-19 07:17
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,不循环了。
热心网友
时间:2023-10-19 07:18
这里牵扯到的就是--a和a--的区别呢。这么说吧。假如b=--a;程序执行分两步,第一步a
=
a-1;第二步b=a;而如果是b=a--;则第一步和第二步反过来执行。假如a=8;执行b=--a后a=b=7;执行b=a--后b=8,a=7;同样执行++时也是一样的道理
热心网友
时间:2023-10-19 07:18
我估计,那是用来作时间间隔控制。while(--a);
是循环50000次,当a
变0时,while
结束。
为何定得如此大,是因为空循环速度很快,只有循环很多次才能获得足够长的时间间隔。
a=50000;
while(--a);
第2个
while(--a);
似乎有问题,死循环。是不是前面漏了另一个
a=50000;