一步一个脚印,一路的风景才是最好的回馈!!!
创新互联建站-专业网站定制、快速模板网站建设、高性价比肥城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式肥城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖肥城地区。费用合理售后完善,十载实体公司更值得信赖。
概述
- 表达式书写规则:
- 运算符不能相邻
- 乘号不能省略
- 可用多层括号表示运算次序,但必须成对出现
- 运算符分类:
一、算术表达式
- 单目运算符不会改变操作数的值
- 整数相除会向下取整
- 求模运算只针对整数,且求模运算符号只与被模数有关
- 运算技巧:
- 7%2——7-(7/2)*2=1
- 5%2——5-(5/2)*2=1
二、赋值运算符、关系运算符
三、逻辑运算符
- &&,||,!
- &&和||存在短路现象,&&只要第一个条件为假,整个都为假,不用判断后一个条件;同理||,只要第一个为真,整个都为真,不用判断后一个
- printf是有返回值,返回的是输出的字节数
printf(" ")&&printf("ABCD")输出0
四、特殊运算符
1.++ --对变量进行加1减1
2.只能对变量使用,不能用于常量和表达式
例如:
int a[10];
*(a++);//不合法
数组名代表首地址,是常量
3. 前置时先运算,再使用,后置相反
4. 一般不要嵌套使用
五、其它运算符
- 逗号运算符
- 条件表达式
条件?成立:不成立; - &取地址
- sizeof判断数据类型或者表达式长度(字节)的运算符
- 类型转换:(目标类型)数据;
六、位运算符
- 按位与 &有0则0如2&4得0
- 按位或 |有1则1如2 | 4得6
- 按位异或 ^相同为0,不同为1如2^4得6
- 按位取反 ~ 单目运算符0变1,1变0
- 右移:>>右移操作就是整体往右移动n位,左边缺得补充符号位
例如:2 >>1 ->0000 0010>>1 ->0000 0001 ->1
10 >>2 ->0000 1010 >>2 ->0000 0010 ->2 - 左移<< 2<<1 ->0000 0010<<1 ->0000 0100 ->4
七、位运算得应用- 判断一个数得最低位是0还是1
思路;用0x1按位与判断0000 0001
如:printf(“%d",0&0x1)为0 - 判断一个数的最高位是0还是1
思路;用0x80按位或判断1000 0000 - 取出uint32_t color 每个字节中的数据
uint32_t color=0x123456;
uint8_t a=(uint8_t)color;
uint8_t b=(uint8_t)(color>>8);
其它同理 - 给定两个uint8_t类型的数,分别放入uint16_t的高字节和低字节
uint8_t Hi=0x1A;
uint8_t Lo=0x28;
uint16_t ver;
ver=((uint16_t)( Hi<<8 )) | Lo;
解释:Hi<<8左移后,后八位都是0,而按位或运算又是有一则一 - 现在有如下几个状态
const int play=1<<0; //1 播放状态
const int stop=1<<1; //2 停止状态
const int pause=1<<2; //4 暂停状态
如果一个变量保存有多种状态,并能反向识别出该变量有哪些状态,应如何处理?
注意状态的设置要保证无重复,有规律,最好是2n
int state=play | stop; //保存play,stop,3
//分别判断state里面是否有play,stop,pause,
//注意不要用if-else,状态会有多种
if(state &play) printf("play\n"); //state &play==1
if(state &stop) printf("stop\n"); //state &stop==2
if(state &pause) printf("pause\n"); //state &play==0,没找到
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文题目:c语言复习之运算符和表达式(四)-创新互联
标题来源:
http://chengdu.cdxwcx.cn/article/pecdi.html