while(--a!=0)是什么意思

void Delay(unsigned char a)
{
unsigned char i;
while( --a != 0)
{
for(i = 0; i < 125; i++);
}
}

while()括号里的逻辑表达式怎么理解,如果是while(a!)怎么理解
a!于!a有什么 区别 求高手

while循环是先计算括号内的表达式的值 ,若它非0,就执行循环。
由于--去处符的优先级高于==,所以
while(--a!=0)
就是变量a先经过自减操作,然后,若a的值不等于0,就执行循环的意思。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-01
!=是不等于的意思,while(--a != 0)是a先自减1,然后判断是否等于0,不等进入循环
!a是判断a是否非0追问

请问如果是 !a!=0 怎么理解 说的详细点 谢谢

追答

!优先级比!=高,所以先!a,则为0. (0) != 0为假,表达式整体为0,基本没有!a!=0的写法
而且没有a!这样的表达式

本回答被提问者采纳
第2个回答  2012-04-04
a!与 !a 这区别可大了,除非你没学过:
前者a!是a的阶乘,例如:5! = 5x4x3x2x1
后者!a是对a取反,例如:如果a是1(ture),!a就是0 (false),一般用于判断条件;
你的代码里的!=是一种判断运算符,意为:不等于,不能随便拆开的。
while (a!)这种判断很少见,你的代码里真的用到了这个,那就是求0以外阶乘满足的情况。
第3个回答  2012-04-04
1.就是a先自减1,且a不等于0,执行循环体。
2.a为真,!a 为假,即!a是对a的否定。a!没有这种表达。
第4个回答  2015-09-20
while((--a) != 0) //根据优先级加上括号
//先计算--a, 前置--使用的是a减掉1之后的值
//意思就是 a == 1就会结束循环

相似回答