C语言while循环中count++与++count的异常问题求助
为什么
count = count++会无限循环,count = ++count却正常? 先明确C语言里自增运算符的核心区别:
- 后置自增
count++:先返回变量当前的原始值,再把变量本身加1。 - 前置自增
++count:先把变量本身加1,再返回加1后的新值。
分析count = count++的无限循环问题
以初始值count=1为例:
- 执行
count++时,先返回count的当前值1,然后count本身被自增为2; - 紧接着执行赋值操作
count = [返回值],也就是把count重新设为1; - 循环条件
count <5永远成立,所以会无限输出"1=0"。
分析count = ++count的正常执行
同样以初始值count=1为例:
- 执行
++count时,先把count自增为2,再返回这个新值2; - 赋值操作
count = 2相当于做了一次无意义的重复赋值,但count确实已经被自增到了2; - 每次循环
count都会正常递增,从1→2→3→4→5,当count=5时不满足count<5,循环退出,刚好输出4次"1=0"。
额外提醒
其实完全没必要写count = count++或者count = ++count这种冗余代码,直接在循环里写count++或者++count就能达到目的,比如:
#include <stdio.h> int main() { int count = 1; while (count < 5) { printf("1=0\n"); count++; // 直接自增即可 } return 0; }
内容的提问来源于stack exchange,提问作者Marvelous Dele
相关产品推荐
相关产品推荐

