第一道答案我觉得是-1,1。第二道完全不理解

img

img


#include
int main()

{

int a=-2,b=0; 

while(a++&&++b); 

printf("%d,%d\n",a,b);

}

#include
int main()

{

char c; 

for(;(c=getchar())!='#';)

    putchar(++c);

}

while(a++&&++b);
第一次循环,a为-2,为真,执行++b后b为1,条件为真,继续循环,然后a加1为-1
第二次循环,a为-1,为真,执行++b后b为2,条件为真,继续巡回,然后a加1为0
第三次循环,a为0,为假,逻辑与的结果肯定为假,++b不执行,b还是2。while循环结束。然后a加1为1
最后a=1,b=2
首先a++是先用a当前值进行逻辑判断,然后a的值加1
其次,逻辑与左侧的表达式如果为假,右侧表达式将不执行