关于C语言问题输出结果的提问

求问,为什么不是输出“0 0”?

#include
int main()
{
    int a=-2,b=2;
    for(;++a&&--b;)
        ;
    printf("%d %d",a,b);
}

  • 当a =-1 时,++a 的结果就是0,a变成0; for循环中间条件是 &&,第一个++a,不满足条件,后面--b就不会计算了,所以b 还是1
  • 所以最后结果输出 0 1

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


这个程序的运行结果是 -1 1。

这是因为 for 循环中的 ++a 和 --b 语句会先进行自增和自减操作,再判断 a 和 b 的值是否为 0。因为 a 的初值为 -2,所以第一次自增后为 -1,不等于 0,继续循环。而 b 的初值为 2,所以第一次自减后为 1,不等于 0,继续循环。因此,程序会一直循环下去,直到 a 和 b 中有一个为 0 才会跳出循环。

最终,循环结束时,a 的值为 -1,b 的值为 1,所以输出 -1 1。