自增和自减运算
- 自增运算符
++ - 自增表达式
1>.前自增表达式.
int num = 1;
++num;
2>.后自增表达式
int num = 1;
num++;
3>.无论是前自增表达式还是后自增表达式,都是将自身的值加1. - 自增表达式是一个表达式,既然是一个表达式,那么这个表达式就一定有一个结果.
那么我们就可以用一个变量将这个结果存储起来.
1>.后自增表达式的结果的计算方式:
先将自身的值取出来作为后自增表达式的结果.然后再将自身的值+1.
2>.前自增表达式的结果的计算方式:
先将自身的值+1,然后再将自身的值取出来,作为表达式的结果.
a++ ——> 整个a++的式子的值是a ——> a的值是 a+1
++a ——> 整个++a的式子的值是a+1 ——> a的值是 a+1
a-- ——> 整个a--的式子的值是a ——> a的值是 a-1
--a ——> 整个--a的式子的值是a-1 ——> a的值是 a-1 - 自增运算符的优先级要比算术运算符的优先级高.
- 自减如是.
- 自增自减是一个单目运算(一个操作数)
比较运算符与比较表达式
- 比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于 - 比较表达式
由比较运算符连接起来的表达式.
int num1,num2;
num1 > num2; - 比较表达式的结果的类型
1>.一个比较表达式代表: 1个条件.
而一个条件的结果: 成立或者不成立.真的或假的.
2>.在C语言中使用int数据类型的数据表示真假.
0 代表假
非0 代表真
3>.如果比较表达式所描述的结果成立,结果 = 1
如果比较表达式所描述的结果不成立,结果 = 0
注意:判断两个数据是否相等,是两个等号==,1个等号叫赋值 - 比较表达式的两边可以使一个变量,也可以是常量,还可以是一个表达式.
如果比较运算符的一边是表达式,会先计算这个表达式的结果,再与另一边的比较.
例如:
int num1 = 100;
int num2 = 200;
int res = num1 + num2 > 300;
先计算num1 + num2 ,再与300比较. - char数据也可以参与比较运算.
那么比较的是相应的ASCII码.
逻辑运算符与逻辑表达式
- 作用:判断多个条件的.使用逻辑运算符来指定多个条件之间的关系.
- 逻辑运算符
&& 逻辑与 并且
|| 逻辑或
! 非 - 逻辑表达式: 由逻辑运算符连接起来的式子
逻辑表达式的结果:
0 假
非0 真 - && 逻辑与
1>.断路问题:
逻辑表达式,在执行的时候,是先计算左边的条件的结果,再计算右边的条件的结果
当时&&逻辑运算符的时候,如果左边的条件不成立,那么整个逻辑表达式的结果为不成立.所以右边的条件,系统不会去判断,条件也不会被执行. - || 逻辑或
当只有一个条件成立时,结果就成立.只有当两边的条件都不成立时,结果才不成立.
断路问题:逻辑或也存在此问题,当左边的条件为真时,右边的条件不会判断 - 优先级:
逻辑运算符的优先级 比 比较运算符的优先级要低 - 逻辑运算符之间的优先级
! 取反的优先级最高
&& 其次的是逻辑与
|| 最后是逻辑或
优先级 万能公式
() ">" -(负号) ">" ! ">" 算数运算符(+-*/%) ">" 比较运算符(><==...) ">" && ">" || - 比较表达式和逻辑表达式. 统称为条件表达式
条件表达式,描述的是一个或者多个条件.
IF结构
- 作用: 可以实现一段代码只有在满足特定条件的时候执行,否则不执行.
- 语法:
if(条件表达式)
{
代码1
}
条件表达式: 比较表达式 和 逻辑表达式 - 执行步骤:
先判断条件表达式的真假,如果为真,则执行代码1,否则忽略代码1,往下执行.
变量的作用域
- 变量的作用域如何寻找:
向外寻找包裹着这个变量定义的语句的最近一层的大括号 - 寻找作用域
int main( )
{
int num = 1;
{
int num2 = 2;
{
int num3 = 3;
}
}
return 0;
}
以上num,num2,num3的作用域都不一样. - 变量在自己的作用域内可以被访问,不受内层的大括号限制
int main( )
{
int num = 1;
{
num = 2;
{
printf("%d\n",num);
}
}
return 0;
} - 外层作用域可以和内层作用域的变量同名,使用遵循就近原则
int main( )
{
int num = 1;
{
int num = 2;
printf("%d\n",num);
}
return 0;
} - 变量出了自己的作用域就会被操作系统从内存中回收,程序员就无权再使用
int main( )
{
{
int num = 2;
printf("%d\n",num);
}
printf("%d\n",num);
return 0;
}
ios开发之C语言第4天的更多相关文章
-
ios开发之C语言第一天
最近在学习ios开发,先学习C语言,再学习OC和swift.正所谓"万丈高楼平地起",打好基础是很重要的,所以C语言也必须好好学习.学习中所使用的操作系统是OS X,开发工具是Xc ...
-
iOS开发之SQLite-C语言接口规范(一)——Ready And Open Your SQLite
为什么要搞一搞SQLite的C语言接口规范呢? 因为在做iOS开发中难免会遇到操作数据库的情况,你可以使用第三方的FMDB等,或者使用CoreData.但我们还是有必要去搞清楚如何去使用SQLite的 ...
-
李洪强iOS开发之OC语言前期准备
OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应 ...
-
iOS开发之SQLite--C语言接口规范(五)——iOS开发使用SQLite实例
本篇博客就使用前面操作SQLite的知识来实现如何去插入,删除和更新数据.然后再把操作SQlite数据库常用的方法进行一个封装.把常用方法进行封装后,把Cars数据库中的其中一个表的数据进行查询,并在 ...
-
iOS开发之SQLite--C语言接口规范(四) —— Result Values From A Query
数据库的在上一篇博客中<SQLite之C语言接口规范(三)——Binding Values To Prepared Statements>用到了如何从查询结果中取出结果值.今天的博客就详细 ...
-
iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
在前面的博客中已经介绍了如何连接SQLite数据库,并且简单的查询和遍历结果集.在前面用到了sqlite3_stmt *stmt,也就是预编译后的SQL语句.在本篇博客中会了解一下sqlite3_st ...
-
iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements
在<SQLite的C语言接口规范(一)>中介绍了如何去连接打开数据库,本篇博客就介绍如何操作数据库,本篇主要给出了如何执行数据库查询语句(Select), 然后遍历结果集.本篇博客就直接使 ...
-
李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
-
李洪强iOS开发之OC语言类的深入和分类
OC语言类的深入和分类 一.分类 (一)分类的基本知识 概念:Category 分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...
-
李洪强iOS开发之OC语言构造方法
OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...
随机推荐
-
tcpdum使用
安装tcpdump包:yum install -y tcpdump ,不加”-i eth0”是表示抓取所有的接口包括lo. 1.抓取包含10.88.88.96的数据包 # tcpdump -i eth ...
-
python_way ,day11 线程,怎么写一个多线程?,队列,生产者消费者模型,线程锁,缓存(memcache,redis)
python11 1.多线程原理 2.怎么写一个多线程? 3.队列 4.生产者消费者模型 5.线程锁 6.缓存 memcache redis 多线程原理 def f1(arg) print(arg) ...
-
linux设备驱动编写_tasklet机制(转)
在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成. 为了最大程度的避免中断处理时间过长而导致中断丢失,有时 ...
-
c++错误修复 数据库无法打开 无法右击 run outtiime
先前有安装vs2015失败的前提 现象:1.无法右击 显示 explorer.exe c++ run outtiime 这些字样 2. 安装有数据库的软件都不能用.显示数据库连接 ...
-
控件风格19种,必须倒背如流——其实就是控件所拥有的能力,即有条件使用VCL框架所提供的(功能)代码
{ New TControlStyles: csNeedsBorderPaint and csParentBackground. These two ControlStyles are only ap ...
-
Zabbix简介及安装
前言 未经监控就上线的系统,就是裸奔,耍流氓. 监控对我们来说太重要了,监控工具也有很多,像,Cacti,Nagios,Ganglia,Zabbix等等,今天我们要介绍的是Zabbix,它的功能很强大 ...
-
Appium python自动化测试系列之滑动函数封装实战(八)
8.1 什么是函数的封装 教科书上函数的封装太官方,我们这里暂且将函数的封装就是为了偷懒把一些有共性的功能或者一些经常用的功能以及模块放在一起,方便我们以后再其他地方调用.这个只是个人的理解所以大家懂 ...
-
LVS-DR集群搭建
安装LVS 下载源码包,安装时需要根据自己的内核,下载 ipvsadm-1.26.tar.gz的源码包,在进行编译安装以后,我们需要检查必需包是否安装: 1.对内核文件做链接 # uname -r 2 ...
-
JAVA对象和类
Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 Java中的类 类可以看成是创建Java对象的模板. 通过下面一个简单的类来理解下Java中类的定 ...
-
canvas 水滴图、液体进度条、仿加速球、圆球水波图
传送门:https://github.com/guoyoujin/WaterMoire <!DOCTYPE html> <html lang="en"> & ...