//
// main.c
// 循环语句
//
// Created by GET-CC on 14-12-6.
// Copyright (c) 2014年 GET-CC. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[])
{
//写个死循环:
/*
1. for语句的循环,for的判断语句里面有三个表达式,真正起作用的是中间的判断语句,也就是第二个表达式的结果:true 或者 false,如果结果是true,那么继续执行循环体,否则就停止执行。
可以这么想,for语句的第二个表达式的值的结果:true或者false是for语句是否执行循环体的开关,如果缺省,默认为true,true就意味着for需要执行自己循环体,什么时候结束?当第二个参数是false得时候,什么时候是false?因为这第二个参数的表达式不是程序员自定义的,所以程序员没有权利去改变它的值,而程序员已无权更改,编译器也不会去管,因为这没有语法错误,for自己更不会管,它只看true办事,所以归根结底是设计java的没有去设计解决此处可能造成死循环的机制,就像自己定义了一个int yeas;让用户输入,用户输入了负数程序照常执行而不会报错,那么这就是设计缺陷,但java的设计者这么设计for语句考虑周到的,因为他们还考虑到这个“死循环”可以被终止,break语句就是解决这类可能造成死循环的机制。
*/
int i = 0;
for ( ; i<5; ) {
printf("Hello, World!\n");
//这个自加语句的作用是,使得判断语句的结果在有限的循环次数内得到个false的结果,
//当然,C语言没有bool类型
i++;
}
/*
2.通过第一个分析,再看while语句就感觉实际上和for语句没有根本的区别,他们执行循环语句的原因都是一个参数的值:true或者false。表面的不同点是:
2.1. for可以把i = 0 和i++写在for后的()里面,而whil这不可以
2.2. for的“ i < 5 ”判断语句都可以省略而默认为true,但是while则不可以。
2.3.如果得要说他们两个有根本上的区别,那么就是java在编写他们的时候偏心了,for的判断语句可以缺省而且还能执行循环体,而while不能缺省
2.4.for语句的结构更加清晰:决定是否循环的参数的初始值:i = 0、导致循环终止的参数值:i = 5、可以使得循环终止的语句:i++,这就是一个有限循环能够被执行的必要条件,这三个条件少了哪一个都有可能造成死循环,这三条件是任何一个循环体必要的,所以这样更直观出错率更低,可以缺省是因为缺省的情况不多见,要不你就选择while,干嘛还非要用for呢,
while这是用在程序员对于三个循环条件把握的很清楚的情况下,可以突出的只写一个。或许还有其它原因等等。
*/
i = 0;
while (i<5) {
printf("Hello, World!\n");
i++;
}
return 0;
}