提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文主要是探讨 i++, ++i, i–, --i 在循环语句 for、while、do…while中的使用
一、for 循环语句
1. i++
和 ++i
的使用
在for
循环中,i++
和 ++i
对于循环体来说没有任何区别——循环次数相同、循环体内的值相等。对于 for
循环而言,两种情况下的执行过程都是一样的:
i=0
,满足i < 5
,执行循环体(循环体内i=0
),执行i=i+1
i=1
,满足i < 5
,执行循环体(循环体内i=1
),执行i=i+1
i=2
,满足i < 5
,执行循环体(循环体内i=1
),执行i=i+1
i=3
,满足i < 5
,执行循环体(循环体内i=1
),执行i=i+1
i=4
,满足i < 5
,执行循环体(循环体内i=1
),执行i=i+1
i=5
,不满足i < 5
,循环结束
代码如下(示例):
for (int i = 0; i < 5; i++)
printf("%d\n",i);
printf("*****************\n");
for (int i = 0; i <5; ++i)
printf("%d\n",i);
输出:
0
1
2
3
4
*****************
0
1
2
3
4
2. i--
和 --i
的使用
在for
循环中,i--
和 --i
对于循环体来说没有任何区别——循环次数相同、循环体内的值相等,对于for
循环而言,两种情况下的执行过程都是一样的:
i=5
,满足i > 0
,执行循环体(循环体内i=5
),执行i=i-1
i=4
,满足i > 0
,执行循环体(循环体内i=4
),执行i=i-1
i=3
,满足i > 0
,执行循环体(循环体内i=3
),执行i=i-1
i=2
,满足i > 0
,执行循环体(循环体内i=2
),执行i=i-1
i=1
,满足i > 0
,执行循环体(循环体内i=1
),执行i=i-1
i=0
,不满足i > 0
,循环结束
代码如下(示例):
for (int i = 5; i > 0; i--)
printf("%d\n",i);
printf("*****************\n");
for (int i = 5; i > 0; --i)
printf("%d\n",i);
输出:
5
4
3
2
1
*****************
5
4
3
2
1
二、while 循环语句
1. i++
和 ++i
的使用
在 while
循环中,i++
和 ++i
是不同的。对于 i++
, 执行顺序是这样的:先判断 --> 再计算 i=i+1
--> 后进入循环体;对于 ++i
, 执行顺序是这样的:先计算 i=i+1
–> 再判断 --> 后进入循环体。两种情况下,都是本次本次对于i
的计算对本次进入循环体起作用。具体说来,对于 while
循环而言,i++
和 ++i
的执行如下:
i++
的情况
i = -5
,满足i != 0
,计算i=i+1
,执行循环体(循环体内i = -4
)i = -4
,满足i != 0
,计算i=i+1
,执行循环体(循环体内i = -3
)i = -3
,满足i != 0
,计算i=i+1
,执行循环体(循环体内i = -2
)i = -2
,满足i != 0
,计算i=i+1
,执行循环体(循环体内i = -1
)i = -1
,满足i != 0
,计算i=i+1
,执行循环体(循环体内i = 0
)i=0
,不满足i != 0
,循环结束
++i
的情况
i = -5
,计算i=i+1
(i=-4
),满足i != 0
,执行循环体(循环体内i = -4
)i = -4
,计算i=i+1
(i=-3
),满足i != 0
,执行循环体(循环体内i = -3
)i = -3
,计算i=i+1
(i=-2
),满足i != 0
,执行循环体(循环体内i = -2
)i = -2
,计算i=i+1
(i=-1
),满足i != 0
,执行循环体(循环体内i = -1
)i = -1
,计算i=i+1
(i=0
),不满足i != 0
,循环结束
代码如下(示例):
int i=-5;
while(i++)
{
printf("%d\n",i);
}
printf("*****************\n");
i=-5;
while(++i)
{
printf("%d\n",i);
}
输出:
-4
-3
-2
-1
0
*****************
-4
-3
-2
-1
2. i--
和 --i
的使用
在 while
循环中,i--
和 --i
是不同的。对于 i--
, 执行顺序是这样的:先判断 --> 再计算 i=i-1
--> 后进入循环体;对于 --i
, 执行顺序是这样的:先计算 i=i-1
–> 再判断 --> 后进入循环体。两种情况下,都是本次本次对于i
的计算对本次进入循环体起作用。具体说来,对于 while
循环而言,i--
和 --i
的执行如下:
i--
的情况
i = 5
,满足i != 0
,计算i=i-1
,执行循环体(循环体内i = 4
)i = 4
,满足i != 0
,计算i=i-1
,执行循环体(循环体内i = 3
)i = 3
,满足i != 0
,计算i=i-1
,执行循环体(循环体内i = 2
)i = 2
,满足i != 0
,计算i=i-1
,执行循环体(循环体内i = 1
)i = 1
,满足i != 0
,计算i=i-1
,执行循环体(循环体内i = 0
)i=0
,不满足i != 0
,循环结束
--i
的情况
i = 5
,计算i=i-1
(i=4
),满足i != 0
,执行循环体(循环体内i = 4
)i = 4
,计算i=i-1
(i=3
),满足i != 0
,执行循环体(循环体内i = 3
)i = 3
,计算i=i-1
(i=2
),满足i != 0
,执行循环体(循环体内i = 2
)i = 2
,计算i=i-1
(i=1
),满足i != 0
,执行循环体(循环体内i = 1
)i = 1
,计算i=i-1
(i=0
),不满足i != 0
,循环结束
代码如下(示例):
int i=5;
while(i--)
{
printf("%d\n",i);
}
printf("*****************\n");
i=5;
while(--i)
{
printf("%d\n",i);
}
输出:
4
3
2
1
0
*****************
4
3
2
1
三、do…while 循环语句
1. i++
和 ++i
的使用
do...while
循环与 while
循环类似,它等价于:执行一次循环体 + while
循环
代码如下(示例):
int i=-5;
do
{
printf("%d\n",i);
}while(i++);
i=-5;
printf("*****************\n");
do
{
printf("%d\n",i);
}while(++i);
输出:
-5
-4
-3
-2
-1
0
*****************
-5
-4
-3
-2
-1
2. i--
和 --i
的使用
do…while 循环与 while循环类似,它等价于:执行一次循环体 + while 循环
代码如下(示例):
int i=5;
do
{
printf("%d\n",i);
}while(i--);
i=5;
printf("*****************\n");
do
{
printf("%d\n",i);
}while(--i);
输出:
5
4
3
2
1
0
*****************
5
4
3
2
1