c语言中for语句相关问题 算阶乘

img


想问下为什么for里面i=2和i=1都可以,i=2的话如果算2的阶乘不就是i=2++,即i=3,那结果不就是3×1=3了吗,为什么输出结果还是2呢

i++是先用i进行运算,然后i的值再加1,不是你想的先加1,再进行运算的

是的

for 循环的一般形式为:
for(表达式1; 表达式2; 表达式3){
语句块
}

它的运行过程为:

  1. 先执行“表达式1”。

  2. 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

  3. 执行完循环体后再执行“表达式3”。

for(;;i++) for(;;++i)
循环中最后条件变化操作都是最后完成的,由编译器自动加上。你在{}内的所有操作都在i++或++i前完成。所以for循环那里写成i++和++i都一样