iOS开发-OC分支结构
BOOL类型
1 unsigned long size = sizeof(BOOL(其他类型...));
2 printf("size = %lu\n",size);
3
4 unsigned long intSize = sizeof(int);
5 printf("intSize = %lu\n", intSize);
关系运算符
用来进行两个数比较
关系运算符的结果有两种,真或假,用BOOL类型变量来接收
1> > <
1 int a = 5, b = 4, c = 3;
2 BOOL r3 = a < b < c; // 先运算 a < b,再和c比较
3 printf("r3 = %d\n", r3);
2> >= <=
符合>或者=任何一个,结果为真
BOOL r4 = 5 >= 5;
printf("r4 = %d\n", r4);
3> ==, !=
= 用来赋值,== 用来判断两个数是否相等
1 BOOL r6 = 5 == 4;
2 printf("r6 = %d\n", r6);
3
4 BOOL r7 = 10 != 5;
5 printf("r7 = %d\n", r7);
逻辑运算符
逻辑与:&& 逻辑或:|| 逻辑非 !
逻辑表达式的结果只有两种,真或假,用BOOL类型的变量来接收
逻辑与, 并且,同时
表达式: 表达式1 && 表达式2
运算规则:表达式1和表达式2同时为真,整个逻辑表达式的结果为真,否则为假(一假即假)
1 int a = 10;
2 int b = 20;
3 BOOL r1 = (a < b) && (b == 20);
4 printf("r1 = %d\n", r1);
短路现象:表达式1的结果为假,整个逻辑表达式的结果为假,表达式2将不再执行
1 BOOL r3 = (a > b) && (a++);
2 printf("r3 = %d\n", r3);
3 printf("a = %d\n", a);
逻辑或 或者,不强调同时
表达式: 表达式1 || 表达式2
运算规则:表达式1或者表达式2任何一个为真,整个逻辑表达式的结果为真,只有当表达式1和表达式2同时为假,整个逻辑表达式结果为假(一真即真,全假则假)
1 int a = 10;
2 int b = 20;
3 BOOL r1 = (a > b) || (b == 20);
4 printf("r1 = %d\n", r1);
5
6 BOOL r2 = (b < a) || (a != 10);
7 printf("r2 = %d\n", r2);
短路现象:当表达式1的结果为真,整个逻辑表达式的结果为真,表达式2将不再执行
1 BOOL r3 = (a < b) || (a++);
2 printf("r3 = %d\n", r3);
3 printf("a = %d\n", a);
逻辑非 取反
BOOL r4 = NO;
BOOL r5 = !r4;
printf("r5 = %d\n", r5);
if语句
第一种形式
if (条件表达式) {
分支语句;
}
条件表达式为真,执行分支语句,如果为假,执行分支语句下面的内容
练习:定义一个变量age,从键盘输入值,如果age大于等于18,输出”你已经成年了“。
1 int age = 0;
2 printf("请入年龄:");
3 scanf("%d", &age);
4 if (age >= 18) {
5 printf("你已经成年了");
6 }
第二种形式
if (条件表达式) {
语句1;
} else {
语句2;
}
如果条件表达式为真,执行语句1,否则执行语句2
练习:输入一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年。
(能被400整除) || ((能被4整除) && (不能被100整除))
1 int year = 0;
2 printf("请输入一个年份\n");
3 scanf("%d", &year);
4
5 BOOL r1 = year % 400 == 0;
6 BOOL r2 = year % 4 == 0;
7 BOOL r3 = year %100 != 0;
8
9 if (r1 || (r2 && r3)) {
10 printf("是闰年\n");
11 } else {
12 printf("不是闰年\n");
13 }
第三种形式
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else {
语句4;
}
练习: 从键盘输入一个字符,如果是数字打印 this is digital,如果是大写字母,打印 this is capital letter,如果是小写字母,打印 this is letter,如果是其他字符,打印 other。
1 char ch = 0;
2 printf("请输入一个字符\n");
3 scanf("%c", &ch);
4
5 if (ch >= '0' && ch <= '9') {
6 printf("this is digital\n");
7 } else if (ch >= 'A' && ch <= 'Z') {
8 printf("this is capital letter\n");
9 } else if (ch >= 'a' && ch <= 'z') {
10 printf("this is letter\n");
11 } else {
12 printf("other\n");
13 }
条件运算符 ? :
条件表达式? 表达式1 : 表达式2;
如果条件表达式为真,执行表达式1,否则执行表达式2
5、switch...case分支
switch (整型或者字符型的表达式) {
case 值1(整型或者字符型的常量): {
语句1;
break;
}
case 值2: {
语句2;
break;
}
......
default: {
语句3;
break;
}
先执行switch后的表达式,根据表达式的值查找想要的case分支,并执行分支语句
default:默认分支,如果没有找到对应的分支,执行default分支
break:结束当前的case分支
练习:从控制台输入1~4,对应打出春夏秋冬的英文词。
1 int value = 0;
2 printf("请输入1~4的整数\n");
3 scanf("%d", &value);
4
5 switch (value) {
6 case 1:
7 printf("Spring\n");
8 break;
9 case 2:
10 printf("Summer\n");
11 break;
12 case 3:
13 printf("Autumn\n");
14 break;
15 case 4:
16 printf("Winter\n");
17 break;
18 default:
19 break;
20 }
iOS开发-OC分支结构的更多相关文章
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...
- iOS开发-OC语言 (一)oc数据类型
分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型.指针数据类型 基本数据类型:数值型.字符型(char).布尔型.空类型(void) 指针数据类型: ...
- iOS开发——OC篇&常用关键字的使用与区别
copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的 ...
- iOS开发——OC篇&OC高级语法
iOS开发高级语法之分类,拓展,协议,代码块详解 一:分类 什么是分类Category? 分类就是类的补充和扩展部分 补充和扩展的每个部分就是分类 分类本质上是类的一部分 分类的定义 分类也是以代码的 ...
- iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)
iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Fou ...
- iOS开发——OC篇&纯代码退出键盘
关于iOS开发中键盘的退出,其实方法有很多中,而且笔者也也学会了不少,包括各种非纯代码界面的退出. 但是最近开始着手项目的时候却闷了,因为太多了,笔者确实知道有很多中方法能实现,而且令我影响最深的就是 ...
- ios开发环境 分支语句 、 循环结构(for) 、 循环结构
1 完成命令解析程序 1.1 问题 有命令解析程序,该程序提供三个功能选项供用户选择,用户选择某功能后,程序在界面上输出用户所选择的功能名称.程序的交互效果如图-1所示: 图-1 由上图可以看出,程序 ...
- iOS开发——OC基础-ARC、BLOCK、协议
一.ARC ARC 是一种编译器特性!而不是IOS运行时特性,和JAVA中得垃圾回收机制完全不一样ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的 ...
- IOS开发的目录结构
http://www.itjhwd.com/iosmolukaifa/ 目录结构 个人总结: =============================================== ...
随机推荐
- ThreadPoolExecutor线程池参数设置技巧
一.ThreadPoolExecutor的重要参数 corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线 ...
- SPOJ3267:D-query
题面 SPOJ3267 Sol 给定\(N\)个正整数构成的序列,将对于指定的闭区间查询其区间内的不同的数的个数 主席树 不是权值线段树 维护位置 如果插入一个数时发现之前有过了 那么修改当前的,那个 ...
- css导航条等元素位置不变
在容器元素中插入 position: fixed; 如果是在微信小程序中,直接用bottom或者top等就可以简单的设置导航条了.
- Docker_快速部署jenkins
开门见山,如何在利用docker快速部署jenkins服务?下面详解 1:docker的基本按照与部署,前文已经详述,这里不多说. 2:pull一个jenkins镜像 docker pull jenk ...
- 魔改版ss-panel v3前端配置文件
配置文件所在目录:网站根目录/config/.config.php <?php // ss-panel v3 配置 // // !!! 修改此key为随机字符串确保网站安全 !!! $Syste ...
- python xlsxwriter库生成图表的应用
xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外 还可以加上很形象的各种图,比如柱状图.饼图.折线图等. 请看本人生成的: 这 ...
- IDEA2017版本打可运行jar包并运行
一.打JAR包 JAR:From modules with dependencies 将依赖一起打包 一般依赖放在与xx.jar同级的libs文件夹中 敲黑板,下图第一个框是输出jar包的位置,第二 ...
- 2018 年 3 月 iOS 面试总结(上市公司,BAT)
序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...
- Java中的代理模式--静态代理和动态代理本质理解
代理模式定义:为其他对象提供了一种代理以控制对这个对象的访问. 代理模式的三种角色: Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求. Real ...
- C/S 和B/S 详解 --- 2017-04-25
来源:脚本之家 一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两 ...