C 语言之运算符
来源:互联网 发布:king网址软件 编辑:程序博客网 时间:2024/05/21 09:29
1.运算符
a+b ——》表达式a,b ——》操作数
+/- ——》运算符
1.1算数运算符
+ - * / %(取余)注意:
(1)%要求操作数必须是整数 5%2 =1
(2)0不能做除数,当然也不能对0取余
(3)如果两个数相除,那么结果取整数部分
1.2 赋值运算符
int num;num = 1;“=”就是赋值运算符
(1)简单赋值
int i,j;
i = j = 100;//从右向左赋值
int i;float f;f = (i = 3.14);程序中不要使用,结果不可预知
(2) 复合赋值
将变量经过一系列运算之后再赋值给本身
int num;
num = num + 5 ; <=> num += 5;
+= -= *= /= %=...........
注意:
不要交换两个运算符的位置
=+ ——> 错误的
1.3 自增/自减运算符
++ --int num = 5;
num = num +1 ;<=>num += 1;<=>num++;<=> ++num;
num = num -1; <=> num -= 1; <=>num--;<=> --num;
如果++/--出现在具有多种运算的表达式中时:
前++ ——>++num 表示先进行++运算,再参与其他运算
后++ ——>num++ 表示先进行其他运算,再进行++运算
注意:(1)不要在同一个表达式中对同一个变量进行多次自增/自减运算,否则结果不可预知
例子:int num = 11;
num++ + ++num = 24,尽量不要这么使用
(2)++ / -- 也可用于浮点数,很少使用;表示整数部分+1
1.4关系运算符
< <= > >=特殊表达式:
int num = 10;
0 < num <100;这个结果永远为真,因为0 <num 结果无论是真还是假,都比100小,以后程序尽量不要这样子写
应写为:
0 < num && num < 100
1.5 判等运算符
==是否相等!=是否不相等
例子:int num = 10;
if( num == 10)
注意:程序中不要省略等号,
经验:程序中尽量这样使用if(10 == num),因为漏掉等号,编译器会报错
1.6逻辑运算符
&& 逻辑与|| 逻辑或
! 逻辑非
运算规则:表达式1 && 表达式2 结果
综上所述:(1)对于逻辑与来说,只有两个都为真结果才为真,否则为假
(2)对于逻辑或来说,只要有一个为真,则结果 为真,否则结果为假
(3)对于逻辑非来说,真为假,假为真
注意:短路特性:
(1)表达式1 && 表达式2
如果表达式1 为假,就不会执行表达式2
(2)表达式1 || 表达式2
如果表达式1为真,就不会执行表达式2
1.7位运算符
例子:3 & 5
3:0000 0011
5:0000 0101 &
----------------------------------------------
0000 0001
应用:判断一个数的奇偶性,以及判断某个数的任一位二进制位 为0 还是为 1
| 按位或,(只要与一个为1,结果就为1)
例子:3 | 5
3:0000 0011
5:0000 0101 |
----------------------------------------------
0000 0111
~ 按位取反
例子:~3
~3:0000 0011
----------------------------------
1111 1100
^ 按位异或(相同为0,否则为1)
例子:3 ^ 5
3:0000 0011
5:0000 0101 ^
----------------------------------------------
0000 0110
(1)与0 相异或 ,保留原来的值
(2)与自身 相异或,全部清零
应用:
不借助第三变量,交换两个整数的值
综上所述:(1)对于按位与来说,只要两个都为1结果才为1,否则为0
(2)对于按位或来说,只要有一个为1结果为1,否则为0
(3)对于按位取反来说,1 为 0,0 为 1,对于 n 按位取反得到的数是:-(n+1)
(4)对于按位异或来说,相同为 0,不同为 1;
位逻辑运算小结:清零取数要用与某位置一可用或
若要取反和交换 轻轻松松用异或
应用:
(1)判断一个指定的数最后1位二进制位是0还是1
方法1:判断奇数还是偶数
方法2:&1:0000 0001 如果结果为0,说明这个数最后1位的二进制位为0,否则为1
(2)判断从右向左倒数第二位的二进制位是 0 还是 1
—》& 2:0000 0010 如果结果为0,说明那个数据的二进制位为0,否则为1
规律 (1)&用于判断指定的二进制位是0还是1
(2)&还可以用于将指定的二进制位置为0
(3)| 可以用于将指定的二进制位置为 1;
1.8 移位运算符
<< 左移,将二进制位向左移动,右边的空位补0>> 右移,将二进制位向右移动,左边的空位补符号位
注意:右移n位时,左边空出来的n位都填充的是符号位
无符号数:3<<1 ->6
3<< 2 ->12
3<< 3 ->24 =>3 << n位,相当于3* 2^n
32 >> 1 ->16
32 >> 2 ->8
32 >> 3 ->4 =>32 >> n位,相当于32 / 2^n
负数:-5:1111 1011
-5<<1 ->1111 1101 ->-3
综上所述:
num >> n位,表示 num / 2^n
num << n位,表示 num * 2^n
1.9运算符 & 和 *
& 标识符名 ——》取出标识符所对应的地址,使用%p输出地址*地址 ——》取出地址上存储的数据
* 和 & 实际上是互逆的运算
1.10三目运算符
表达式1?表达式2:表达式3如果表达式1为真,则执行表达式2,跳过表达式3
如果表达式1为假,则跳过表达式2,执行表达式3
三目运算符的嵌套:
表达式1?表达式2:(表达式3?表达式4:表达式5)
表达式1?(表达式2?表达式3:表达式4):表达式5
- C 语言之运算符
- C语言之运算符+-*/%、++、--
- C语言之运算符
- c语言之运算符
- C语言入门教程之二运算符
- C语言运算符优先级之三字经
- C语言小贴士之运算符
- C语言之算术运算符
- C语言运算符优先级之歌
- C语言之运算符进阶
- C语言之各种运算符
- c语言之运算符优先级
- c语言之sizeof运算符
- C语言之运算符(一)
- C语言之运算符二
- IOS之C语言--4运算符
- C语言之各种运算符
- 重试C语言之C语言运算符
- LeetCode Two Sum
- 第二节 页面跳转
- 安卓开发中菜单
- 在CentOS 6.4中编译安装gcc 4.8.1
- 获取当前路径
- C 语言之运算符
- iphone开发前传
- MySQL中的视图及性能问题
- linux用户管理
- 工作收获
- intel 64 和 IA-32 的manual
- Tomcat解析系列
- Swing —— 扩展PlainDocument限制JTextField只能输入字母与数字
- GCC特性之__init修饰解析