滴水逆向联盟

标题: for 语句的三个表达式是必须的吗? [打印本页]

作者: 大禹治水    时间: 2014-11-17 07:23
标题: for 语句的三个表达式是必须的吗?
for 语句一共有3个表达式,

表达式一: 通常是用来为循环变量赋初值的。
表达式二: 通常是控制循环条件的。
表达式三: 通常用来修改循环变量的值。
在编写程序的过程中,这3个表达式都可以根据情况来进行省略。

《1》在for 语句中省略表达式一,就会跳过给循环变量赋初值的这一步,则应该在for之前给循环变量赋值。
  1. for(;i<10;i++)
复制代码
例如: 实现1到100数字之间的累加计算,省略for 语句中的第一个表达式,代码如下:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i=1;
  5.         int iSum=0;
  6.         //使用for循环
  7.         for(;i<=100;i++)
  8.         {
  9.                 iSum=i+iSum;
  10.         }
  11.         printf("1 到 100 之间的累加结果为:%d\n",iSum);
  12.         return 0;
  13. }
复制代码
从运行代码上看到 for 语句中将第一个表达式省略,而在定义 i 变量时直接为其赋初值,

这样在使用 for 语句循环的时候就可以不用为 i 赋初值,从而省略了一个表达式。
程序运行结果如下图:



《2》 for 语句中省略表达式2,即不判断循环条件,循环将无休止的进行下去,也就是说表达式默认为真。
  1. for(iCount=1;;iCount++)
  2.         {
  3.                 sum=sum+iCount;
  4.         }
复制代码
在括号中,表达式1为赋值表达式,二表达式2是空缺的,这样就相当于使用 while 语句。

  1.         int sum=0;
  2.         int iCount=1;
  3.         while(1)
  4.         {
  5.                 sum=sum+iCount;
  6.                 iCount++;
  7.                 printf("%d\n",iCount);
  8.         }
复制代码
  1. 注意:表达式2为空即为 ,无休止的循环
复制代码

《3》for 语句中省略表达式3,但此时程序设计人员应该另外设法保证循环能正常的结束,否则也就是死循环。

  1. int sum=0;
  2.         int iCount=0;
  3.         for(iCount=1;iCount<50;)
  4.         {
  5.                 sum=sum+iCount;
  6.                 iCount++;
  7.                 printf("%d\n",sum);
  8.         }
复制代码

《4》如果3个表达式都省略,这是一个永无休止的循环。



作者: 大灰狼    时间: 2014-11-17 09:30
一起学习,努力奋斗哦:P
作者: 熊大    时间: 2014-11-18 10:35
第一次看到这问题。
作者: bcjc209    时间: 2016-12-9 10:45
懂了,多谢!




欢迎光临 滴水逆向联盟 (http://www.dtdebug.com/) Powered by Discuz! X3.2