关于for循环 求解答

为什么10还能输出啊?i初始值是10满足了大于1的条件,不应该除以二吗,也就是说第一个输出值不应该是5吗?还有答案的3和2怎么来的 ?求解答!

img

第一次执行顺序:i = 10 ,i > 1 , printf("%d", i++) 这句输出 10 ,i ++ = 11 , i /= 2, 11 /= 2 得到 5.
第二次执行顺序:i = 5 > 1 , printf("%d", i++) 输出 5 ,i ++ = 6 , i /= 2 = 3.
第三次执行顺序:i = 3 > 1, printf("%d", i++) 输出 3 ,i ++ = 4, i /= 2 = 2.
第四次执行顺序:i = 2 > 1,printf("%d", i++) 输出 2 , i++ = 3, i /= 2 = 1.
第五次执行顺序:i = 1 > 1 条件不满足,退出循环。

首先这个代码里有几个注意的地方
1.for(表达式1;表达式2;表达3)语句4;
for语句执行顺序是,表达式1,表达式2,语句4,表达式3。之后则不再执行语句1剩下三个开始循环,直到执行表达式2值为假时停止

2.i/=2是i=i/2 的简写 C语言整型数据除法,结果直接扔掉小数部分,只保留整数部分

3.i++,你可以理解为先使用i后让i+1,如文中的printf,是先打印出i当前的值后让i+1

你理解一下上面三条,按照这个去理解执行,答案中就包含10 3 2,望采纳

你的原意是输出10内能被2整除的数是吧?先说正确代码吧


for(int i=10;i>1;i--){
if(i/2==0){
printf("%d",i);
}
  
}

你需要复习一下for循环的执行顺序、i++的执行顺序和结果