1. if 条件语句

if 表达式 : 表达式是一个 整型 或者 布尔型, 0 或者 FALSE 为 FALSE, 大于 0 为 TRUE;

代码示例 :

/*************************************************************************
    > File Name: 11-ifelse.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二 12/ 2 01:22:57 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		int a = 9;
		if(a > 20){
			NSLog(@"大于9");
		}else if(a > 20){
			NSLog(@"大于10");
		}else{
			NSLog(@"小于等于10");
		}

		if(a)
		{
			NSLog(@"非0数字也可以是TRUE");
		}
	}
}

执行结果

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-ifelse.m
octopus-2:oc octopus$ ./a.out
2014-12-02 01:49:12.487 a.out[658:507] 小于等于10
2014-12-02 01:49:12.490 a.out[658:507] 非0数字也可以是TRUE

2. switch 分支语句

switch 控制表达式 : switch() 中得控制表达式类型限定 char, short, int, long, long long .

代码示例 :

-- 代码 :

/*************************************************************************
    > File Name: 11-switch.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二 12/ 2 18:49:28 2014
	Switch 分支语句 switch 中只能是 short char int long 和 long long 类型
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		char type = 'A';
		switch(type)
		{
			case 'A':
				NSLog(@"A type");
				break;
			case 'B':
				NSLog(@"B type");
				break;
			case 'C':
				NSLog(@"C type");
				break;
			default:
				NSLog(@"DEFAULT");
		}
	}
}

-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-switch.m
octopus-2:oc octopus$ ./a.out
2014-12-02 18:54:18.696 a.out[850:507] A type

3. 循环结构

循环要素 :

-- 初始化 (init_statements) : 初始化循环中用到的数据;

-- 循环条件 (test_expression) : boolean 表达式, 决定是否执行循环体;

-- 循环体 (body_statements) : 重复执行的内容;

-- 迭代语句 (iteration_statements) : 改变循环条件;

(1) while 循环

while 循环格式 : 先判断 test_expression 值, 如果为 TRUE, 执行循环体, 否则执行下面的语句;

init_statements;

while(test_expression)

{

body_statement;

iteration_statements;

}

(2) do while 循环

do while 循环格式 : 先执行循环体, 判断循环条件, 如果 test_expression 为真, 就执行下一次循环, 否则终止循环;

init_statements;

do

{

body_statements;

iteration_statements;

}while(test_expression)

(3) for 循环

for 循环格式 :

for(init_statements; test_expression; iteration_statements)

{

body_statements;

}

(4)  代码示例

代码 :

/*************************************************************************
    > File Name: 11-while.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二 12/ 2 20:29:17 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		//while 循环
		int a = 3;
		while(a > 0)
		{
			NSLog(@"while 循环 : a 的值是 %d", a);
			a--;
		}

		//do while 循环 这里 a 不符合条件, 只执行 do 中得语句
		do
		{
			NSLog(@"do while 循环 : a = %d", a);
		}while(a > 100);

		//for 循环
		for(int i = 0; i < 5; i ++)
		{
			NSLog(@"for 循环 i = %d", i);
		}
	}
}

执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-while.m
octopus-2:oc octopus$ ./a.out
2014-12-02 20:47:14.454 a.out[1021:507] while 循环 : a 的值是 3
2014-12-02 20:47:14.456 a.out[1021:507] while 循环 : a 的值是 2
2014-12-02 20:47:14.456 a.out[1021:507] while 循环 : a 的值是 1
2014-12-02 20:47:14.457 a.out[1021:507] do while 循环 : a = 0
2014-12-02 20:47:14.457 a.out[1021:507] for 循环 i = 0
2014-12-02 20:47:14.457 a.out[1021:507] for 循环 i = 1
2014-12-02 20:47:14.458 a.out[1021:507] for 循环 i = 2
2014-12-02 20:47:14.458 a.out[1021:507] for 循环 i = 3
2014-12-02 20:47:14.459 a.out[1021:507] for 循环 i = 4

4. 循环控制

循环控制 :

-- break : 退出当层循环;

-- continue : 跳过该次循环, 执行下一次循环;

-- return : 直接返回函数, 不管有多少层, 直接返回;

代码示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 11-circleControl.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 三 12/ 3 00:40:44 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		NSLog(@"break 控制 : ");
		//break 会 跳出 对应的当前一级的循环, 如果是嵌套循环, 只会跳出那一层循环
		for(int i = 0; i < 3; i ++)
		{
			for(int j = 0; j < 2; j++)
			{
				if(i == 1 && j == 1)
				{
					NSLog(@"i = 1, j = 1 中断本层循环, 执行 i = 2 的情况");
					break;
				}
				NSLog(@"i = %d, j = %d", i, j);
			}
		}

		NSLog(@"\n");
		NSLog(@"continue 控制 : ");
		for(int i = 0; i < 3; i ++)
		{
			if(i == 1)
			{
				NSLog(@"i == 1, 终止本次执行, 执行 i = 2 情况");
				continue;
			}
			NSLog(@"i = %d", i);
		}

		NSLog(@"\n");
		NSLog(@"return 控制 : ");
		for(int i = 0; i < 3; i ++)
		{
			for(int j = 0; j < 2; j ++)
			{
				if(i == 1 && j == 1)
				{
					NSLog(@"i == 1 && j == 1, 直接退出函数, 不再执行下面的语句");
					return 0;
				}
				NSLog(@"i = %d, j = %d", i, j);
			}
		}
	}
}

-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-circleControl.m
octopus-2:oc octopus$ ./a.out
2014-12-03 01:06:35.669 a.out[1360:507] break 控制 :
2014-12-03 01:06:35.671 a.out[1360:507] i = 0, j = 0
2014-12-03 01:06:35.671 a.out[1360:507] i = 0, j = 1
2014-12-03 01:06:35.672 a.out[1360:507] i = 1, j = 0
2014-12-03 01:06:35.672 a.out[1360:507] i = 1, j = 1 中断本层循环, 执行 i = 2 的情况
2014-12-03 01:06:35.673 a.out[1360:507] i = 2, j = 0
2014-12-03 01:06:35.673 a.out[1360:507] i = 2, j = 1
2014-12-03 01:06:35.674 a.out[1360:507]
2014-12-03 01:06:35.674 a.out[1360:507] continue 控制 :
2014-12-03 01:06:35.675 a.out[1360:507] i = 0
2014-12-03 01:06:35.675 a.out[1360:507] i == 1, 终止本次执行, 执行 i = 2 情况
2014-12-03 01:06:35.675 a.out[1360:507] i = 2
2014-12-03 01:06:35.676 a.out[1360:507]
2014-12-03 01:06:35.676 a.out[1360:507] return 控制 :
2014-12-03 01:06:35.676 a.out[1360:507] i = 0, j = 0
2014-12-03 01:06:35.677 a.out[1360:507] i = 0, j = 1
2014-12-03 01:06:35.677 a.out[1360:507] i = 1, j = 0
2014-12-03 01:06:35.678 a.out[1360:507] i == 1 && j == 1, 直接退出函数, 不再执行下面的语句

5. goto 语句

goto 用法 :

-- 定义标签 : 在程序任意位置打上标签, 例如 "start : ";

-- 跳转标签 : 使用 "goto 标签;" 语句, 跳转到指定位置;

goto 常用场景 : 从内层循环跳到指定的外层循环, 或者直接跳出多重嵌套循环, 还要继续执行下面的语句;

代码示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 11-goto.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 三 12/ 3 01:09:55 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		NSLog(@"goto 代替 do while 循环 : ");
		int k = 0;
		circle :
		NSLog(@"k = %d", k++);
		if(k < 3)
		{
			goto circle;
		}

		NSLog(@"\n");
		NSLog(@"goto 跳出本层循环");
		for(int i = 0; i < 3; i ++)
		{
			for(int j = 0; j < 2; j ++)
			{
				if(i == 1 && j == 1)
				{
					NSLog(@"此时 i == 1 && j == 1跳出到 外层循环, 执行 i = 2 的情况");
					goto out;
				}
				NSLog(@"i = %d, j = %d", i, j);
			}
			out :
			NSLog(@"内存循环执行完毕");
		}

		NSLog(@"\n");
		NSLog(@"goto 跳出所有循环");
		for(int i = 0; i < 3; i ++)
		{
			for(int j = 0; j < 2; j ++)
			{
				if(i == 1 && j == 1)
				{
					NSLog(@"此时 i == 1 & j == 1 跳出所有循环");
					NSLog(@"i = %d, j = %d", i, j);
				}
			}
		}
		over :
		NSLog(@"所有循环执行完毕");
	}
}

-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-goto.m
octopus-2:oc octopus$ ./a.out
2014-12-03 01:26:36.027 a.out[1475:507] goto 代替 do while 循环 :
2014-12-03 01:26:36.028 a.out[1475:507] k = 0
2014-12-03 01:26:36.029 a.out[1475:507] k = 1
2014-12-03 01:26:36.029 a.out[1475:507] k = 2
2014-12-03 01:26:36.029 a.out[1475:507]
2014-12-03 01:26:36.030 a.out[1475:507] goto 跳出本层循环
2014-12-03 01:26:36.030 a.out[1475:507] i = 0, j = 0
2014-12-03 01:26:36.031 a.out[1475:507] i = 0, j = 1
2014-12-03 01:26:36.031 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.031 a.out[1475:507] i = 1, j = 0
2014-12-03 01:26:36.032 a.out[1475:507] 此时 i == 1 && j == 1跳出到 外层循环, 执行 i = 2 的情况
2014-12-03 01:26:36.032 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.033 a.out[1475:507] i = 2, j = 0
2014-12-03 01:26:36.033 a.out[1475:507] i = 2, j = 1
2014-12-03 01:26:36.033 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.034 a.out[1475:507]
2014-12-03 01:26:36.034 a.out[1475:507] goto 跳出所有循环
2014-12-03 01:26:36.035 a.out[1475:507] 此时 i == 1 & j == 1 跳出所有循环
2014-12-03 01:26:36.035 a.out[1475:507] i = 1, j = 1
2014-12-03 01:26:36.035 a.out[1475:507] 所有循环执行完毕

【IOS 开发】Object - C 语法 之 流程控制的更多相关文章

  1. 【Java基础】基本语法-程序流程控制

    基本语法-程序流程控制 程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺 ...

  2. Java基础语法02——流程控制

    流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)

  3. iOS 开发之版本上线更新流程

    iOS 开发之版本上线更新流程   把自己app上线的流程记录下来,希望能够让自己加深印象,也能帮助到一些人便是极好的! 证书和描述文件的配置就不写了,直接配置工程吧. 大致把我自己上线的流程写一下: ...

  4. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  5. Java基础语法(4)-流程控制

    title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...

  6. Java基础语法与流程控制

    Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...

  7. Python之路【第一篇】:介绍、基本语法、流程控制

    一.python 简介 python 特点 Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网 ...

  8. Java基本语法--程序流程控制

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块.流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构.分支结构.循环结构.本篇博客主要是对 ...

  9. 8、Python语法之流程控制

    一 引子 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(用到if判断).循环结构(用到while与for) 二 分支结 ...

随机推荐

  1. Servlet init()

    有时候希望在servlet首次载入时,执行复杂的初始化任务,但并不想每个请求都重复这些任务的时候,用init()方法他在servlet初次创建时被调用,之后处理每个用户的请求时,则不在调用这个方法.因 ...

  2. java表达式类型的自动提升

    当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升.Java定义如下的自动提升规则:1. 所有byte型.short型和char型将被提升到int型. 2. 整个 ...

  3. 对闭包的理解(closure)

    什么是闭包: 当你声明一个局部变量时,这个局部变量有作用域,通常局部变量值只存在于你定义的Block or Function中: function() { var a = 1; console.log ...

  4. Python3 File 方法

    Python3 File(文件) 方法 file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行 ...

  5. 关于Linux下软件包aptitude的相关操作

    aptitude+回车 - 进入aptitude操作界面,可以对预览查看各种软件包 aptitude show package_name - 列出与XXX相关的软件包信息,但是并不能看到该软件包所安装 ...

  6. RDO Stack: No valid host was found. There are not enough hosts available.

    Issue: When you launch an instance in Newton, you may find that the instance cannot be started due t ...

  7. sublime text 2 解决错误 [Decode error - output not utf-8]

    以win 10 为例, 找到文件C:\Users\xxzx\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build 添加 ...

  8. Swift类中如何创建一个对外只读对内可读写的属性

    很简单用private修饰符,后面跟限制关键字set: class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print( ...

  9. VMware中的桥接模式、NAT(网络地址转换模式)、Host-only(主机模式):转自:http://blog.chinaunix.net/uid-11798538-id-3061551.html

    其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍.在个虚拟交换机,分别是-个虚拟机交换机,而在VMware Workstation 5以 ...

  10. J2EE中MVC的各层的设计原则及其编写注意事项

    总结了下J2EE的MVC模式开发原则,很多细节处理好了是很有利于开发与维护的. 下面就从各层说起. 视图层 主要是客户端的显示,主要是JSP和HTML,随着Web的不断发展,许多基于Javascrip ...