求问,为什么不是输出“0 0”?
#include
int main()
{
int a=-2,b=2;
for(;++a&&--b;)
;
printf("%d %d",a,b);
}
方案来自 梦想橡皮擦 狂飙组基于 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。