c语言,for(i=5;i--;)和for(i=5;--i;)的区别,再解释一下这个循环的意思和运行顺序

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
c语言for循环语句请高手解释

#include
void main()
{
int a,b,c,d=0;
for(a=1;a<5;a++)
{
for(b=1;b<5;b++)
{ for(c=1;c<5;c++)
{ if(a!=b&&b!=c&&a!=c)
{
d++;
printf(\"%d%d%d \",a,b,c);
}
}
}
}
printf(\"\
\");
printf(\"共有这样的数%d个\
\",d);
}

初学就记住,一定要把所有的括号全部写出来。

++i 是先i+1再判断条件表达式
j-- 是先j-1再判断条件表达式
再看for循环的流程:
因此,上面的表达式可以逐步解释为:
一、赋初值 i=1 j=6
二、判断条件;++i!=j--,此时i=2 j=6 条件成立,循环内语句执行一次 s=7(i=2 j=5)
三、判断条件;++i!=j--,i=3 j=5 条件成立,循环内语句执行一次 s=7(i=3 j=4)
四、判断条件;++i!=j--,i=4 j=4 条件不成了,退出循环。
i=4 h=4

有区别,区别就在--i这了,这个位置是判断是否执行循环体的地方,所以在这只要返回值不是零,就执行循环体,

总的来说,前一个比后一个多运行一次循环体,
原因就是i--和--i的返回值问题,当循环到i是1的时候,第一个还会循环一次,因为i--是1,后面再利用i的时候才是0
但是第二个,--i,直接返回0,所以不会再运行循环体了

for的运算顺序是
for(表达式1;表达式1;表达式3)
{
循环体
}
先运行表达式1,这个一般是初始化变量的,这个只在第一次循环的时候起作用,第二次循环这里就不在运行了
接着运算表达式2,这个一般是个判断(别的也可以),只要这个表达式的返回值不是零,就运行循环体,是零就不运行循环体
接着是运行循环体,这个要在表达式返回值为非零的情况下
接着运行表达式3,一般来说这个事改变循环条件的
接着在运行表达式2,判断是否满足条件

运行顺序是
表达式1
|------》 |
| 判断表达式2---- 零------------------结束循环
| |
| 非零
| |
| 循环体
| |
----------表达式3

需要知道的东西:

1.for(赋初值(initialize);判断条件(test);条件改变(increment))  为一般比较规范的写法,当然不这么写也没关系(都空着都行)。

2.判断条件为: 逻辑类(真/假) 不多说。数值类的任何非零数都被认为是真,零意味着假。

3.i--为先用i判断条件之后i=i-1;    --i 为先i=i-1之后判断i .



这两个主要是判断的条件不同。第一是先判断,再i的值减一,第二个是先i的值减一,再判断。如果i=10,则第一个执行循环体10次,第二个执行循环体9次。

这两个主要是判断的条件不同。第一是先判断,再i的值减一,第二个是先i的值减一,再判断。
运行顺序是
表达式1
|------》 |
| 判断表达式2---- 零------------------结束循环
| |
| 非零
| |
| 循环体
| |
----------表达式3

你主要是要弄清楚i--和--i的区别,比如说,当i=2时,有以下两个输出语句(1)printf("%d",i--);
(2)printf("%d",--i);把这两个分开去运行,第一个语句的结果为2,而第二个语句的结果就为1。因为i--是先把i的值取出来先使用在自减,而--i是先自减在使用。希望能帮到你。