iOS学习笔记第2天——C基础:运算符
来源:互联网 发布:dorado7 js 编辑:程序博客网 时间:2024/05/12 23:18
一、运算符(执行特定算数或逻辑操作的符号)
1.关系运算符的结果0,1代表什么
0代表假 1代表真
1 > 0结果为1(真)
取模只能用整数类型
取模运算的正负性,取决于左边的操作数
取模左边的数,小于右边数的时候,得数就是左边数
2. 运算符分类
按照功能分为
1>算术运算符
2>关系运算符与逻辑运算符
3>按位运算符
根据参与运算的操作数的个数分为
1>单目运算
只有一个操作数: a++, !,sizeof
2>双目运算符
两个操作数: a+b, a%b
3>三目运算符
C中仅此一个: a > b ?1 : 0
3. 运算符的优先级
分为15级,不需要死记硬背: ()小括号是1级
4. 结合性
1>左结合性:普通运算,从左至右2 * 4 + 3
2>右结合性:赋值运算,将等号右边的值赋给左边的变量: a = b =10;
二、算术运算符(+-*/%)
1. 注意点
1>隐式类型转换// 大类型转换为小类型时,会丢失精度
只有相同类型的数据才能进行运算,如果在计算过程中类型不同,则会自动将小类型转换为大类型
int a = 10 + 2.8 -> 10.0 + 2.8 -> 12.8
// int = int(4) + doulbe(8)
之后在赋值的时候会再次进行一次隐式转换,会将计算结果转换为变量的类型,这样就会丢失精度
a = 12;
2>强制类型转换//将数据类型强制转换为另一种
int number = (int)10.9
3>自动类型提升// 将参与运算的数据转换为同一类型 ->转换为运算数中最大的类型
int number = 10 + 10.9 -> 10.0 + 10.9
4>在运算过程中,参与运算的是什么类型,计算结果就是什么类型
double num1 = 1 / 2;
num1 = 0.0;// 由于运算数1,2都是int,因此计算结果也是int=0,但由于赋值给double,因此进行了隐式转换为0.0
double num2 = (double)1 /2;
num2 = 0.5;// 将1强制转换为double,2会由于自动类型提升转换为double,最后赋值给double = 0.5
double num3 = (double)(1 /2);
num3 = 0.0;// 由于小括号的运算优先级最高,因此先计算1/2,两个int计算结果为0,之后强制转换为0.0
2. 模运算 %
1>模运算符只能作用于整数
int num1 = 10 % 3; // 1
int num2 = 12 % 5; // 2
double num3 = 12.2 % 5.0; // 错误格式,报错
2>模运算符的计算结果的正负性,取决于左边的操作数
int num1 = -10 %3; // -1
int num2 = 10 % -3; // 1
3>如果左边操作数 < 右边操作数,结果为左边操作数
int num1 = 2 % 9; // 2
二、赋值运算符(=, +=, -=, *=, /=, %=)
1. 赋值表达式(右结合性)
int num = 10 + 5; // 等号左边必须是变量
int num2 = 10;
num2 += 5; // 15
num2 *= 2; // 30
2.赋值运算符的优先级比算数运算符低
3. 符合赋值运算符
int a = 5;
a *= 1 + 2;// a = (1 + 2) * 5
三、自增、自减运算符(++, --)
1. 格式(先用后变)
int i = 1;
i++; // i = i + 1; i = 2
i--; // i = i - 1; i = 1
2. 格式(先变后用)
int j = 1;
int k = 1;
k = ++j; // k = 2, j = 2 j会先自增,然后赋值给k
k = j++; // k = 2, j = 3 j会先赋值给k,然后再自增
3. 注意
1>自增、自减只能运用于"单个"变量
int i = j++ + k++ // 合法
2>++在前先++,++在后后++
四、逗号运算符(,) //仅了解
1. 运算方式
变量 =表达式1,表达式2,表达式3, .....表达式n
算式会根据逗号来依次计算每个表达式的值:表达式1运算结束后 ->表达式2运算 ->表达式3运算。。。
2. 计算结果:
变量 =表达式n
3.在运算中尽量不要使用逗号表达式,只当做分隔符用
五、sizeof(计算所占字内存字节数)
1.可以计算变量, 常量,数据类型所占内存的字节数
int number = sizeof(10);
int number2 =sizeof 10; // 如果是常量,括号可以省略,但是要加一个空格
double doubleValue = 0;
int number4 = sizeof doubleValue; // 如果是变量,括号也是可以省略的
int number3 = sizeof(int); // 如果计算数据类型,则括号不能省略
2.sizeof是一个运算符,而不是一个函数!!!
六、关系运算符(>, <, >=, <=, ==, !=)
1.关系运算符的返回值只有两种: 0和1//真或假
int a = 3 >2; // 输出1
int b = 3 <2; // 输出0
int num1 = 10;
int num2 = 20;
int num3 = 10;
int x = num1 == num2; // 输出0
int y = num1 == num3; // 输出1
2.关系运算符的优先级
>, <, >=, <= 是同一级,而==, !=的优先级比较低
int a =10 == 4 > 3;// a = 10 == 1 -> a = 0
int b = 0 !=4 > 3; // b = 0 != 1 -> b = 1
七、逻辑运算符
1. &&逻辑与 (一假则假,同真才真)
int a = 4 >3 && 5 > 3;
// a = 1 && 1 --> a = 1
int b = 4 >6 && 5 > 3
// b = 0 && 0 --> b = 0
判断x是否在(1,10)之间
int x = 1 < x && x <10
2. ||逻辑或 (一真则真,同假才假)
int a = 4 >3 || 4 < 1;
// a = 1 || 0 --> a = 1
int b = 4 >5 || 4 < 1;
// b = 0 || 0 --> b = 0
3. !逻辑非 (表达式取反)
int a = !(10 >9);
// a = !1 --> a = 0;
int b = !(10 <9);
// b = !0 --> b = 1;
多个非运算符的运算顺序:右至左
int a = !!!!!(10 >5);
// a = 0
4.注意: C语言中任何数值都有真假性 ———非0即真
int a = 1 &&12; // a = 1;
int b = 1 &&0; // a = 0
5.逻辑运算符的短路
1> &&
int a = 0;
int num =10 < 5 && a++; //由于&&一假则假的特性,当10 < 5为假时,a++就不会运行了,因此a = 0,num = 0
2> ||
int b = 0;
int num2 =10 > 5 || b++; // ||是一真则真,当10 > 5已经为真,那么b++就不会运行,因此b = 0, num2 = 1
6.逻辑运算符的优先级
逻辑非 >算数运算符 > &&和|| >赋值运算符
int a = !0 && (3 +2); // a = 1
int b = !0 +4; // b = 5;
int c =4 > 3 && 5 >2 || 4 < 10;// c = (4 > 3 && 5 > 2) || 4 < 10 -- > 1 || 4 < 10 --> c = 1;
八、三目运算符(条件运算符)// C中唯一一个三目运算符
1. 格式
int a = 10;
int b = 20;
int max = a > b ? a : b; // max = b
// 1. 先判断a > b
// 2. 如果为真,max = a
// 3. 如果为假,max = b
2. 注意点
优先级:算术运算符 > 条件运算符 >赋值运算符
int max2 = a + 50 > b ? a + 20 : b + 10;
// 1. 先计算 a + 50
// 2. 判断 a + 50 > b
// 3. 条件为真,运行a + 20
// 4. max2 = a + 20;
// 5. 期间a和b的值并没有改变
- iOS学习笔记第2天——C基础:运算符
- iOS学习笔记第2天——C基础:选择结构if
- iOS学习笔记第1天——C基础:常量、变量、注释
- iOS学习笔记第1天——C基础:printf和scanf
- iOS学习笔记第3天——C基础:选择结构switch
- iOS学习笔记第3天——C基础:循环结构while和for
- iOS学习笔记第4天——C基础:函数
- iOS学习笔记第4天——C基础:进制
- 黑马程序员_学习笔记第2天——运算符、语句
- 黑马程序员_学习笔记第2天——运算符、语句
- iOS学习笔记(2) - Objective-C基础
- JavaScript学习笔记第一天——运算符
- 黑马程序员——IOS学习笔记(Object-c基础)
- IOS学习笔记——object-C基础 (一)
- IOS学习笔记——object-C基础 (二)
- C语言基础学习——第2天(语句)
- 黑马程序员-C基础运算-学习笔记
- Swift学习笔记——基础运算符
- 关于使用百度UEditor富文本编辑器的总结
- IOS 有导航栏的时候,坐标从(0,64)变成从(0,0)开始
- 存储方式三:数据库SQLite(SQLiteOpenHelper)
- 中小型网站架构分析及优化
- COMODO反间谍软件BOClean在线下载
- iOS学习笔记第2天——C基础:运算符
- java环境配置
- 一位ACMer过来人的心得
- 从头到尾彻底理解KMP
- JS实现复制到剪贴板功能
- CString::GetAt()
- STM32时钟系统学习
- Html5添加非常实用的手风琴插件教程
- Eclipse导入项目No projects are found to import