黑马程序员_ios基础总结4_C语言基本语法三

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

位运算

1.1什么是位运算?

二进制时所作的与、或、异或等操作


1.2& 按位与

功能
只有对应的两个二进位均为1时,结果位才为1,否则为0。
举例:比如9&5,其实就是1001&101=1,因此9&5=1
规律
二进制中,与1相&就保持原位,与0相&就为0

1.3| 按位或

功能
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。

1.4^ 按位异或

功能
当对应的二进位相异(不相同)时,结果为1,否则为0。
规律
相同整数相^的结果是0。
多个整数相^的结果跟顺序无关。

1.5~ 取反

对整数a的各二进位进行取反,符号位也取反(0变1,1变0)

1.6<< 左移

a<<n
把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方
由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性

1.7>> 右移

把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方
为正数时, 符号位为0,最高位补0
为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定

算术运算

2.1C语言里的算数用算符

C语言一共有34种运算符,包括了常见的加减乘除运算
1.加法运算+
除开能做加法运算,还能表示正号:+5、+90
2.减法运算-
除开能做减法运算,还能表示符号:-10、-29
3.乘法运算*
注意符号,不是x,而是*
4.除法运算/
注意符号,不是÷,也不是\,而是/
整数除于整数,还是整数。1/2的值是0,这个并不是二分之一
5.取余运算%
什么是取余:两个整数相除之后的余数
%两侧只能是整数
正负性取决于%左侧的数值

2.2算术运算的注意点

1.自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
2.自动将大类型转换为了小类型,会丢失精度
自动类型提升
int b = 10.5 + 10;
3.将右边10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
4.强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);


2.3运算优先级


赋值运算符

3.1赋值运算

int a = 10 + 5;的运算过程
a = b = 10;的运算过程
等号左边不能是常量,比如10 =11;
2.复合赋值运算符
+=
-=
*=
/=
%=


关系运算符

在C语言中,条件成立称为“真”,条件不成立称为“假”,因此,判断条件是否成立,就是判断条件的“真假”。
怎么判断真假呢?C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,0则是“假”。

4.1关系比较

开发中经常要比较
关系运算符的运算结果只有2种:如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”。

4.2使用注意

1.关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者:2==3>1
2.关系运算符的结合方向为“从左往右”: 4>3>2
3.关系运算符的优先级小于算术运算符3+4>8-2

逻辑运算

5.1&&逻辑与 

1.使用格式
“条件A && 条件B”
2.运算结果
只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是“假”

5.2&&逻辑与运算过程 

总是先判断条件A是否成立
如果条件A成立,接着再判断条件B是否成立:如果条件B成立,“条件A && 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
如果条件A不成立,就不会再去判断条件B是否成立:因为条件A已经不成立了,不管条件B如何,“条件A && 条件B”的结果肯定是0,也就是“假”

5.3|| 逻辑或 

1.使用格式
“条件A || 条件B”
2. 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3.使用注意
•C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑或也适用于数值。比如 5 || 4的结果是1,为“真”;-6|| 0的结果是1,为“真”;0|| 0的结果是0,为“假”

5.4! 逻辑非 

使用格式
“! 条件A”
2> 运算结果
其实就是对条件A进行取反:若条件A成立,结果就为0,即“假”;若条件A不成立,结果就为1,即“真”。也就是说:真的变假,假的变真。

5.5优先级 

逻辑运算符的优先级顺序为: 小括号() > 负号- > ! > 算术运算符> 关系运算符> && > ||
表达式!(3>5)|| (2<4) && (6<1) :先计算 !(3>5)、(2<4)、(6<1),结果为1,式子变为1|| 1 && 0,再计算1 && 0,式子变为1|| 0,最后的结果为1
表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3),结果为1
表达式4>3&& !-5>2 等价于 (4>3) &&  ((!(-5))> 2) ,结果为0







---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值