为啥编译结果是1,2

include <stido.h>
void main()
{
int a=-2,b=0;
while(a++&&b++);
printf("%d,%d",a,b);
}

a++&&b++运行的结果是-1和1啊,你打错了吧,a++和++b才是1,2
如果是a++&&b++:
判断是这样的:先看a,是-2,(之后让a=-1)再看b,b为0(之后让b=1),条件不满足,结束循环。所以ab此时为-1和1
如果是a++&&++b:
判断是这样的:先看a,是-2,(之后让a=-1)让b自增为1,再看b,条件满足,进入下一轮循环。
先看a,是-1,(之后让a=0)让b自增为2,再看b,条件满足,进入下一轮循环。
先看a,是0,(之后让a=1),条件不满足,结束循环。所以ab此时为1和2

当while条件为0时,结束循环
a++和b++会先用当前的a和b值进行判断,然后才各自加1
由于b=0,所以第一次while条件就为0,直接跳出,此时a=-1,b=1
打印结果是-1,1