【IOS 开发】Object - C 语法 之 流程控制
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 语法 之 流程控制的更多相关文章
- 【Java基础】基本语法-程序流程控制
基本语法-程序流程控制 程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺 ...
- Java基础语法02——流程控制
流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)
- iOS 开发之版本上线更新流程
iOS 开发之版本上线更新流程 把自己app上线的流程记录下来,希望能够让自己加深印象,也能帮助到一些人便是极好的! 证书和描述文件的配置就不写了,直接配置工程吧. 大致把我自己上线的流程写一下: ...
- Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制
Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...
- Java基础语法(4)-流程控制
title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- Python之路【第一篇】:介绍、基本语法、流程控制
一.python 简介 python 特点 Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网 ...
- Java基本语法--程序流程控制
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块.流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构.分支结构.循环结构.本篇博客主要是对 ...
- 8、Python语法之流程控制
一 引子 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(用到if判断).循环结构(用到while与for) 二 分支结 ...
随机推荐
- IDE、SDK、API
IDE 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代 ...
- C语言程序设计第二次作业——顺序结构
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...
- (概念)多个CPU和多核CPU以及超线程(Hyper-Threading)
引言 在这篇文章中我会主要介绍CPU相关的一些重要概念和技术.如果你想更好地了解操作系统,那就从本文开始吧. 中央处理器(Central processing unit) 在我们了解其它概念之前,我们 ...
- Python里面 search0和 match0的区别?
这是正则表达式里面的函数: match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配: 也就是说match()只有在0位置匹配成功的话才有返回,如 ...
- ubuntu 英文系统下安装中文输入法
环境:ubuntu15.10 64位 英文版 软件:fcitx输入法框架,及多种拼音输入法 linux的英文系统会比中文少很多麻烦,特别是在命令行输入路径的时候,如果路径是中文将是一件很头疼的问题.但 ...
- 【python标准库模块三】Os模块和Sys模块学习
Os模块 导入os模块 import os 获取当前工作目录 os.getcwd() 切换目录,跟linux中的cd一样 os.chdir("文件夹名") 递归生成文件夹 os.m ...
- Junit4 java.lang.Exception: No runnable methods
出现如下错误: java.lang.Exception: No runnable methods at org.junit.runners.BlockJUnit4ClassRunner.validat ...
- MLDS笔记:Optimization
当函数空间覆盖到目标函数时,如何通过优化调整神经网络的参数找到这个目标函数呢? 深度学习中的损失函数是非凸的,非凸优化是个NP-hard问题,如何通过梯度下降来解决这个问题呢? 注意,不同于learn ...
- Hibernate异常之Integer转float(自动类型转换错误)
错误代码: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float at org.hiber ...
- 为什么《Dive into Python》不值得推荐
2010 年 5 月 5 日更新:我翻译了一篇<<Dive Into Python>非死不可>作为对本文观点的进一步支持和对评论的回复,请见:http://blog.csdn. ...