if不是应该接条件么,(--a)不是判别条件吧

完全没看懂if(--a)
if不接判别条件,怎么算下一步啊。然后这个b++;要不要算

img

if是判断语句
if里边可以是单独的一个常量,也可以是一个式子
例如

if(--a)
printf("这是第%d条语句");
else printf("条件错误");

假设a=3
这里的运行过程就是首先a=a-1即a=2 if为真
输出的结果为:这是第2条语句

假设a的初始值为a=1
里的运行过程就是首先a=a-1即a=0 if为假
执行else
输出:条件错误

if(--a)就是先将a减去1,然后判断a的值是否为0,如果为0则为假,否则为真
比如判断指针是否为空:
char * p = NULL;
if(p) {do something;}
这里的if(p)就相当于if(p != NULL)的意思