OC循环结构:1-for循环
在Objective-C中,经常会遇到重复的执行同一段代码的情况。这时候就会使用到循环功能,和其它编程语言一样,Objective-C也提供循环结构的语法,包括for循环,while循环和do-while循环。循环的本质就是重复一定的次数来执行某段语句,一般应用循环结构基本就是累加或者遍历对象以便操作。
for循环简介
for循环是最常使用的循环方式。for循环是开界的,它的一般形式为:
for(<初始化> ; <条件表达式>; <增量定义> ) {
//循环执行的语句
...
}
其中:
- 初始化总是一个赋值语句, 它用来给循环控制变量赋初值;
- 条件表达式是一个关系表达式, 它决定什么时候退出循环;
- 增量定义循环控制变量每循环一次后按什么方式变化。
这三个部分之间用分号;分开。
例如下方的代码,先给i赋初值1, 判断i是否小于等于10。若是,则执行语句, 之后i的值增加1。再重新判断, 直到条件为假, 即i>10时, 结束循环。
for(i=1; i<=10; i++){
//循环执行的语句
...
}
for循环的实现形式
除了上面介绍的简单for循环之外,for循环中还可以嵌套for循环,从而实现一些复杂的循环操作。例如,当一个数组中嵌套了另外若干个数组的情况下,我们就可以使用嵌套for循环的方式来取出数组中存储的每个对象。
- 简单的for循环。下方的代码实现了打印0~9这10个数字。
int main(int argc, const char * argv[]) {
@autoreleasepool {
for (int i = 0; i < 10; i++) {
NSLog(@"%d", i);
}
}
return 0;
}
- 嵌套的for循环。示例代码中实现了求解从1到5五个数字先计算每个数字的阶乘,然后再累加求和。
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 求1!+2!+3!+4!+5!的值
int sum = 0;
// 外层循环控制循环次数
for (int i = 1; i < 6; i++) {
int factorial = 1;
// 内层循环求i的阶乘
for (int j = 1; j <= i; j++) {
factorial *= j;
}
sum += factorial;
NSLog(@"%d! = %d", i, factorial);
}
NSLog(@"1!+2!+3!+4!+5! = %d", sum);
}
return 0;
}
运行结果:
for循环的循环条件
在编写for循环时可能会遇到在开始循环之前需要初始化多个变量,或者每次循环要计算多个表达式的情况。其实在for循环的任何位置都可以包含多个表达式,只要用逗号分隔这些表达式即可。例如,使用以下形式开始的for循环,在循环开始之前,将i的值设为0,j的值设为100,每次执行完循环体后,i的值加1,j的值减1。
for (int i = 0, j = 100; i < 10; i++, j--) {
...
}
既然for循环中字段的表达式可以不止一个,那么省略for循环中的一个或多个字段也是可以实现的。省略for语句中某个字段的最常见情形发生在无须计算初始表达式的值时。在这种情况下,for语句的第一个字段可以简单的保留空白,只要仍然保留分号即可,例如:
for (; j < 10; j++) {
...
}
如果省略了for语句的第二个字段,那么这条for语句实际上就是无限循环的,因为循环条件永远为真,如果需要退出循环就需要执行(return,break或goto语句)。我们也可以使用在for循环中定义循环变量的做法,比如for(int i=0;i<10;i++)的写法,这个i就是该for循环的局部变量了,离开for循环就无法访问。
示例代码
https://github.com/99ios/2.3.1