C语言中For的循环条件

这里的for循环条件到底是什么意思啊

img

还有后面所有b的值为什么都是1

就是当a和b同时为0时,循环结束。
每次循环时,a的值会加1。如果a加1后不为0,--b是不执行的,所以b的值不会变。当a加1为0时,才执行--b
这个代码哪里来的?应该有问题。实际会一直运行到a值出现int类型溢出后,再次变为0才能结束循环

a+1不为0 或者b-1不为0
可能是运算符优先级的问题,你尝试将或的两边都用括号来括住试试看

  • ++a 成立 或者 --b 成立
  • ++a 的结果是 a+1
  • --b 的结果是 b - 1
  • c语言 0 是 false, 非0 是 true

img

++a||--b 为循环判断条件
1、a和b都等于0时候,循环停止退出;
2、a或者b至少一个不为0,循环一直进行下去;
题主给的图:
第一行打印:a + 1 = -1,条件为真,循环判断条件没有执行到--b,b不变;
第二行打印:a + 1 = 0,条件为假,执行到下一个--b,b=1;
第三行打印:a + 1 = 1,条件为真,循环判断条件没有执行到--b,b不变;
.。。。
第n行打印:a + 1 = n,条件为真,循环判断条件没有执行到--b,b不变;