受朋友委托,帮他发CSDN上来,原创,转载请留下原文地址,谢谢!
判等运算符
C语言中表示不关系运算符与其它编程语言的相同,但是判等运算符有着独一无二的形式:
== 等于(数学 =)
!= 不等于
逻辑运算符
逻辑运算符所产生的结果:逻辑结果,0或者1,当然操作数的数值经常是1或者0,所以逻辑运算符将任何非零操作数作为真值来处理,同事将任何的零值操作数作为假值来助理
&& 逻辑与 || 逻辑或 ! 逻辑非
运算规则
! 表达式
表达式1 && 表达式2
表达式1 表达式2 结果
真 真 真
真 假 假
假 真 假
假 假 假
表达式1 || 表达式2
表达式1 表达式2 结果
真 真 真
真 假 真
假 真 真
假 假 假
短路特性:
表达式1 && 表达式2 如果表达式1为假 就不会进行表达式2的计算
表达式1 || 表达式2 表达式1为真,就不会进行表达式2的计算
还有一个短路运算符: ?:
位运算特性:参加位运算的操作数转换二进制
按位取反
~3
...0000 0011
...1111 1100
这个例子我们可以发现:3按位取反是-4,4按位取反是-5 那么:n按位取反就是-(n+1)
按位与
经常用来屏蔽某些二进制位(置0)。也可以知道某一个数的某一位是1还是09
3&5
...0000 0011
...0000 0101
0001
按位或
经常用来将某些二进制位置1,也可以知道某个二进制为是1还是0
3 | 5
...0000 0011
...0000 0101
0111
按位异或
可以用来将指定的位反转
3 ^ 5
...0000 0011
...0000 0101
0110
运算规则:对应二进制位上的数字仙童,则结果为0,否则为1
写个程序判断一下某个整数的二进制格数倒数第三位是0还是1
左移:1010 0101 << 1
0100 1010
右移的时候右边的空位补零
右移:1010 0101 >>1
右移 左边空位补上符号位
正数:左移一位 相当于乘以2
右移以为 相当于除以2
下面我们看看代码怎么实现输出一个整数的二进制数
取地址运算
1.&运算符取地址
2.* 根据地址取变量
3.printf中的%p用来输出地址
4.取地址取得是一个变量的开始地址
5.地址的按字节编号的
条件运算符
<1>条件?表达式1:表达式2
是C语言中唯一的一个三元运算符
是C语言中唯一的一个三元运算符
<2>表达式为:表达式1?表达式2:表达式3
先求解表达式1,若其值为真(非0)则表达式2的值作为整个表达式的取值
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值
隐形类型的转换
编译器自己进行的 ,不需要干预
char + int
int + unsigned int
下面我们看看:int 和 unsigned int 进行混合运算
首先将int转换成unsigned int参与运算
注意:
浮点和整形的运算 转成 浮点后在运算
short int / char 的运算转成int 后 运算
如果自己想进行类型的转换,那么可以使用强制类型转换
(目标类型) ,如: int
i = 0; char c = (char)i;
i = 0; char c = (char)i;
类型转换其实就是建立了一个新的变量,新的内存空间
首发地址:http://www.bcwhy.com/thread-18618-1-1.html