C语言关键字浅析-for

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Johan_Joe_King/article/details/84023594

### C语言关键字浅析系列 ###

### ISO/ANSI C 关键字 ###

for关键字似乎并不能从其字面本身看出其含义

但这是个最常见的关键字,而且在循环结构的使用中也基本是最多的

同while一样,for循环是一个入口条件循环,并且在某些方面比while显得更简洁干练

for的作用是:

表达for循环结构。

1、for的三个动作

注意,for循环后的括号内不是三个参数,而是三个动作

严格来讲它们分别叫做初始化,测试,更新,比如这条语句:for (i = 0; i < 10; i++)/* 循环体 */;

i = 0就是初始化过程,测试条件指的是初始化完成后是否有执行循环语句的条件成立,即i < 10,i++是执行完一遍后的更新操作

由于括号中的是三个动作,而且初始化操作只做一次,所以有时候初始化操作处不一定都是赋值语句:

int index = 0;
for (printf("Begin scanning\n");index != 1024;)   /* 此处初始化操作其实是一个输出 */
{
	getFromData(&index);  /* 对index赋值 */
}

2、for的三个动作的缺省

在一些循环中,每趟循环完毕不一定非要有某个更新操作(如上),所以最后一个动作缺省的时候表示没有更新操作

当然这也依赖于for的缺省机制,按道理这三个动作其实都可以缺省掉而且不会认为是错误的:

/* 全员缺省的for,效果是死循环,但看上去怪别扭的 */
for (;;){}

/* 这样写死循环好一些没 */
while (1){}

/* 别看有些for循环表面上风风光光的,其实是个死循环,下面这个程序会一直加,加到爆炸 */
for (i = 0;;i++){}

/* 和上面老兄一个死样儿 */
i = 0;
while(1){i++;}

注意,第一个动作缺省可以理解,第三个动作缺省可以理解,第二个动作缺省为什么就死循环了?

因为当系统发现for的第二个动作缺省时,会认为是“真”,所以在一直条件为真的情况下就没有退出的情况了,这样的设备建议拔电源

3、逗号运算符

有时候for循环的初始化和更新操作可能不止针对一个变量,但一条语句只能修改一个变量,

这就催生了逗号运算符给for循环锦上添花的一段佳话

逗号运算符扩展了for循环的灵活性,使其在初始化和更新时能多做点事:

for (i = 0, j = 0; i < 10; i++, j += 2)
{
	/* 虽然一次动作的子动作多了,但顺序还是一样的 */
}

——参考《C Primer Plus第五版》

相关文章:

C语言关键字浅析-while

C语言关键字浅析-do

C语言关键字浅析-break

C语言关键字浅析-continue

C语言关键字浅析goto

猜你喜欢

转载自blog.csdn.net/Johan_Joe_King/article/details/84023594