黑马程序员-对C语言各种运算符的总结
来源:互联网 发布:淘宝交易风险保障 编辑:程序博客网 时间:2024/06/10 06:21
对C语言各种运算符的总结
运算符的优先级(从高到低)
优先级
描述
运算符
1
括号
()、[]
2
正负号
+、-
3
自增自减,非
++、--、!
4
乘除,取余
*、/、%
5
加减
+、-
6
移位运算
<<、>>、>>>
7
大小关系
>、>=、<、<=
8
相等关系
==、!=
9
按位与
&
10
按位异或
^
11
按位或
|
12
逻辑与
&&
13
逻辑或
||
14
条件运算
?:
15
赋值运算
=、+=、-=、*=、/=、%=
16
位赋值运算
&=、|=、<<=、>>=、>>>=
这个是前面漏发的,开始是觉得这一章没什么用,没什么营养没必要发。但是后来有一次做这个的题目4题错了2题,顿时发现任何一个小的知识没弄明白 都可能导致大局出错,而且运算本身就是往后经常用到的知识,是不可或缺额。所以我老老实实的总结了这一章节的全部知识点。
一.算数运算符
基本使用:
int a =10 + 1 + 2 - 3 + 5;
int b = -10
int c =10 * b;
int d =10 / 2;
// 取余运算(模运算)
// %两边都是整数
// %取余结果的正负性只跟%左边的数值有关
int e =10 % -3;
printf("%d\n", e);
// *自动类型转换(double->int)
int a =10.8;
// *强制类型转换(double->int)
int b = (int)10.5;
printf("%d\n", a);
// *自动类型提升(int->double)
double c =10.6 + 6;
double d =1 / 3;
double e = (double)3/2;
printf("e的值是%f\n", e);
// *复合赋值运算符
a += 5;// a = a + 5;
a *= 5;// a = a * 5;
a += 5 +6 + 4; // a = a + (5 + 6 + 4);
// *自增自减 a++是下一行再加 ++a是马上加
int b;
int a =10;
// b = 10 + 12;
//b = (a++) + (++a);
// b = 11 + 11;
b = (++a) + (a++);
// a -> 11
二.关系型运算
// 条件成立就返回1,真
// 条件不成立就返回0,假
int a =10;
int b =11;
int result = b >= a;
// *复杂关系型运算
int a = 5 != 4 + 2 * 7 > 3 ==10;
printf("%d\n", a); // 答案是0
三.逻辑运算符
1.逻辑与条件1 &&条件2
例1
int a = 10>3 && 7<6;
int a =0 && 10;
printf("a=%d\n", a);// 答案是0
例2
int a =10;
int b =10;
int c = (a<5) && (++b>=11);
// 这题有陷阱如果a<5不符合后 后面的就直接不算了。
printf("a=%d, b=%d, c=%d\n", a, b, c);// 答案是10,10,0
2.逻辑或条件1 ||条件2
例1
int a =10;
int b =10;
int c = (a<5) || (b++ -10);
printf("a=%d, b=%d, c=%d\n", a, b, c);// 答案是10,11,0
3.逻辑非 !条件
// 如果条件成立,就返回0;如果条件不成立,就返回1
例1
int a = !10>8;
printf("a=%d\n", a);// 答案是0
例2
int a = !!10;
printf("a=%d\n", a);// 答案是1
四.三目运算符
条件 ?数值1 :数值2
例1
int a = !100 ?9 : 89
printf("a=%d\n", a);// 答案是89
例2 计算3个整数之间的最大值
int a =10;
int b =999999;
int c =1000;
// 求出a、b的最大值
int abMax = (a > b) ? a : b;
// 求出最终的最大值
int d = (abMax > c) ? abMax : c;
//int d = (((a > b) ? a : b) > c) ? ((a > b) ? a : b) : c;
printf("d is %d\n", d);// 答案是999999
return 0;
五.位运算符
1.按位与 &
// 都是1才能是1否则是0
10111011
10101101
---------
10101001
1001
0101
-----
0001
2.按位或 |
// 有一个是1就能是
1001
0101
-----
1101
3.按位异或 ^
// 不一样就是1 ,一样就是0
*相同数值进行异或,结果肯定是0,比如9^9
*交换9^5^6 ==9^6^5
*任何数值跟0进行异或,结果还是原来的数值,9^0 == 9
*a^b^a == a^a^b ==0^b == b
1001
0101
-----
1100
0101
0000
----
0101
4.左移 <<
// 左移几位就是乘2的几次方
9<<1 ->9 * 2的1次方 ==18
9<<2 ->9 * 2的2次方 ==36
9<<n ->9 * 2的n次方
5.右移 >>
// 右移几位就是除2的几次方
8>>1 ->8/2 == 4
8>>2 ->8/2的2次方 ==2
8>>n ->8/2的n次方
- 黑马程序员-对C语言各种运算符的总结
- 【黑马程序员】---C语言运算符总结
- 黑马程序员--c语言各种运算
- 黑马程序员-c语言基础总结之运算符
- 黑马程序员--C语言的位运算符总结
- 黑马程序员_C语言中运算符的总结
- 黑马程序员--c语言运算符的概念与分类
- 黑马程序员———C语言的运算符
- 黑马程序员------C语言中sizeof运算符的使用
- 6、黑马程序员-C语言运算符
- 黑马程序员--C语言基础-运算符
- C语言运算符"黑马程序员"
- 黑马程序员-----------C语言基础-----------运算符
- 【黑马程序员】C语言运算符
- 黑马程序员-C语言回顾-运算符
- 黑马程序员-C语言各种数据类型整理总结
- 黑马程序员-c语言学习位运算总结
- ——黑马程序员——C语言基础--sizeof运算符和strlen 函数的区别总结
- Restful架构的相关说明
- 工具
- prototype Ajax.Updater 利用ajax更新指定的容器
- LINUX查看硬件信息
- 将自己的HTTP模块编译进NGINX
- 黑马程序员-对C语言各种运算符的总结
- iPhone/iPad应用使用麦克风的开启和关闭
- Redis 客户端Jedis使用(一)
- 安卓16进制颜色值
- android的通知栏的实现
- C# asp .net 将数据库中数据变换为xml
- A WebLogic Server 12.1.3 Compatibility with Previous Releases
- 数据结构与算法分析-C语言描述 重点笔记
- Cocos2d-x_CCSprite(精灵类)介绍