逆向基础--C++ 运算符 (05)
一.运算符
C++的运算符 包括:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其它运算符。
1.1 算术运算符
包括:+(加) -(减) *(乘) /(除) %(取模) ++(整数值增加1) --(整数值减少 1)
1.2 关系运算符
包括:==(是否相等) !=(是否相等) >(大于) <(小于) >=(大于等于) <=(小于等于)
1.3 逻辑运算符
包括:&&(逻辑与运算符) ||(逻辑或运算符) !(逻辑非运算符)
重点介绍一下逻辑非运算符:用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。
int a = 10;int b = 20;//两边都为true,则条件为 true。输出:trueif (a>0 && b>0) {std::cout << "true";}//两边任意一个为true,则条件为 true。输出:trueif (a > 0 || b > 0) {std::cout << "true";}//里面a <0为false,则条件为true。 输出:trueif ( !(a <0)) {std::cout << "true";}
1.4 位运算符
位运算符作用于位,并逐位执行操作
//按位与(&)操作,两个位都是1时,结果才是1,否则为0unsigned int a = 60; // 60 = 0011 1100 (二进制) unsigned int b = 13; // 13 = 0000 1101 (二进制) int c = 0;c = a & b; // 12 = 0000 1100 /*把a和b的二进制值从右往左,按位比较,最右边是a:0与b:1位与比较, 0&1=0,0&0=0,1&1=1,1&1=1 所以C的右四位是1100a:0 0 1 1 1 1 0 0b:0 0 0 0 1 1 0 1c:0 0 0 0 1 1 0 0 所以值是12*/
//按位或(|)运算规则:两个位中只要有一个为1,结果就为1,否则为0。unsigned int a = 60; // 60 = 0011 1100 (二进制) unsigned int b = 13; // 13 = 0000 1101 (二进制) int c = 0;c = a | b; // 61 = 0011 1101/*把a和b的二进制值从右往左,按位比较,最右边是a:0与b:1位与比较, 0&1=1,0&0=0,1&1=1,1&1=1 所以C的右四位是1101a:0 0 1 1 1 1 0 0b:0 0 0 0 1 1 0 1c:0 0 1 1 1 1 0 1 所以值是61*/
//----------------- 一个简单的权限判断示例----------------- [Flags] public enum UserPermissions {None = 0,Read = 1, // 0001Write = 2, // 0010Execute = 4, // 0100Delete = 8 // 1000 }// 设置多个权限, permissions二进制:0011 UserPermissions permissions = UserPermissions.Read | UserPermissions.Write;// 检查权限, (permissions & UserPermissions.Read)==(0011 & 0001)==UserPermissions.Read if ((permissions & UserPermissions.Read) == UserPermissions.Read) {Console.WriteLine("有读取权限"); }
1.5 其它运算符
| 运算符 | 描述 | 示例 |
| sizeof | sizeof 运算符返回变量的大小 |
int b = 10; |
| Condition ? X : Y | 条件运算符如果, Condition 为真 ? 则值为 X : 否则值为 Y |
int a = 10; |
| Cast | 强制转换运算符把一种数据类型转换为另一种数据类型 |
float a = 10.5; |
| & | 指针运算符 & 返回变量的地址。 |
float a = 10.5; |
| * | 指针运算符 * 指向一个变量。 |
int number = 42; // 定义一个整型变量 // *ptr = 20; 修改了number的值 |
作者:花阴偷移
出处:https://www.cnblogs.com/MrHSR/
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/968403.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!