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. JVM回收方法区内存

    很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是 ...

  2. gdb调试的基本使用

    GDB调试 启动程序准备调试 GDB yourpram 或者 先输入GDB 然后输入 file yourpram 然后使用run或者r命令开始程序的执行,也可以使用 run parameter将参数传 ...

  3. redis在java客户端的操作

    redis高性能,速度快,效率高的特点,用来做缓存服务器是很不错的选择.(和memcache相似)redis在客户端的操作步骤: 1.redis单机版操作 1.1通过Jedis对象操作 (1)将安装r ...

  4. 用命令直接在两台ubuntu之间传输数据

    首先查看openssh-server是否启动: ps -e | grep ssh 如果没有任何提示则是没有启动: sudo /etc/init.d/ssh -start 启动进程.若提示找不到命令则需 ...

  5. python笔记五(条件判断/循环/break和continue)

    一 条件判断 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

  6. ScalaPB(1): using protobuf in akka

    任何类型的实例作为消息在两端独立系统的机器之间进行传递时必须经过序列化/反序列化serialize/deserialize处理过程.假设以下场景:在一个网络里有两台连接的服务器,它们分别部署了独立的a ...

  7. 【博弈】【HDU】取石子游戏

    取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. Python3 MySQL 数据库连接

    什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...

  9. Dynamics 365 Online 试用账号申请方式

    专人整理的申请方式PPT,这里转载给大家,下载地址

  10. 整理的Java List Set Map是否有序,元素是否允许重复

    整理的Java List Set Map是否有序,元素是否允许重复的说明,如下图: