c语言==运算符(7)
来源:互联网 发布:青山软件培训 编辑:程序博客网 时间:2024/06/15 19:56
tips:
1、== 是判断相等的符号,但是有的时候会不慎写成=,这个时候编译的时候不会报错,但是这个语句就不会形成约束条件,这个条件下的语句会无条件执行。所以一般将数字写在左边,表达式写在右边,这样万一写错的话就会报错。
2、&&是短路与,一旦前面的表达式错了,就不会执行后面的表达式。
3、||是短路或,一旦前面的表达式对了,就不会执行后面的表达式。
如
int i = 0;int j = 0;if((++i) < 0 && (j++) > 0){ ……}printf("%d,%d\n" , i, j);//打印结果为i = 1, j = 0;
int num = 5;if(!num){ printf("A");}else printf("B");//这个函数的意义是 0打印A,非0打印B
掩码
常量是有符号数,当他和无符号数进行运算的时候,结果会变成有符号数,所以要给常量进行无符号强制转化。如unsigned int
掩码是用来方便位操作(与,或,抑或,左移,右移)的,因为可以与数的机器数进行相与等位操作,得到数字。
//想要依次得到数字。可以向右移,然后与掩码1相与,也可以向左移,与十六进制的0x80000000相与,此时如果用二进制的,系统可能识别不了。//掩码mask的获得方法(例如想得到右边开始m位到n位的值)://将0这个数的二进制数取反,然后向右移32-(n-m+1)位,再向左移m位,(注意转换无符号数) (unsigned int)~(unsigned int)0>>(32-(n-m+1))<<m//还可以2^(n+1)-2^m,直接获取他的二进制数,即掩码//有符号数左移用0补齐,而右移用符号位补齐,所以要强制转换成无符号数。
&运算符
(1)清0特定位(mask中特定位置0,其他位为1,s = s & mask)
(2)取某位中的指定位(mask特定位置1,其他位为0,s = s & mask)
|(或)运算符
将特定位置1,而其他位不变
^(抑或)运算
(1)不使用中间变量而交换两数
(2)将特定位取反(mask特定位置1,s = s & mask)
//交换两数而不使用中间变量//抑或的方法a = a ^ b;b = a ^ b;a = a ^ b;//加法的方法a = a + b;b = a - b;a = a - b;//但是他的缺点就是可能会溢出//乘法的方法//缺点是不能交换0
条件(三目)运算符
(表达式)?(结果1):(结果2);//根据表达式进行判断,如果表达式是对的,就执行结果1,否则就是结果2
0 0
- c语言==运算符(7)
- C语言运算符运算
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言“++”运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- C语言运算符
- 利用xamp安装discuz出现图片显示不了
- Mysql中文乱码问题完美解决方案
- 使用Maven实现Struts2+Hibernate4+Spring3整合SSH框架(三):将项目上传Github
- greenDao框架浅入深出 2
- YY游戏云的AngularJS实践
- c语言==运算符(7)
- js DOM操作
- springmvc处理静态样式无法加载
- Android开发--CardView使用
- Problem with Indigo and Gazebo 2.2
- Android消息推送
- javascript深入理解js闭包
- 【C语言基础】-02字符串和格式化输入/输出
- java以json格式向后台服务器接口发送请求