C# 运算符大全(按照操作数个数分类)
来源:互联网 发布:linux安装谷歌浏览器 编辑:程序博客网 时间:2024/04/30 11:20
+ - ! ~ ++ – true false & sizeof()
二元运算符:
+=,-=等不进行说明。
+ - * / % << >> < > <= >= is as == & ^ && || += -= *= /= %= |= ^= <<= >>= ??
三元运算符
?:
重点说明:
1.&与&&的区别
2.|与||的区别
3.<<和>>的位运算
4.^的说明
5.??和?:的说明
一元运算符说明:
+:
一元 + 运算符是为所有数值类型预定义的。对数值类型进行一元 + 运算的结果就是操作数的值。
也就是数值的正数。
-:
一元 - 运算符是为所有数值类型预定义的。数值类型的一元 - 运算的结果是操作数的反数
也就是数值的负数。
!:
逻辑非运算符 (!) 是对操作数求反的一元运算符。为 bool 定义了该运算符,当且仅当操作数为 false 时才返回 true。
~:
~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的
++:
增量运算符.
++x:先进行自增,后进行运算。
x++:先进行运算,后进行自增。
–:
减量运算符.
–x:先进行自减,后进行运算。
x–:先进行运算,后进行自减。
true:
当由用户定义的类型定义时,返回 bool 值 true 以表示真,否则返回 false。
false:
&:
返回其操作数的地址
sizeof():
用于获取 值类型 的字节大小.
sizeof 运算符仅适用于值类型,而不适用于引用类型。
从 C# 2.0 版开始,将 sizeof 应用于预定义类型不再要求使用不安全模式。
二元运算符说明:
*:
乘法运算符 (*),用于计算操作数的积
/:
除法运算符 (/) 用第二个操作数除第一个操作数
%:
模数运算符 (%) 计算第二个操作数除第一个操作数后的余数
+:
二元 + 运算符。对于数值类型,+ 计算两个操作数之和。
-:
二元 - 运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。
<<:
左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int。
>>:
右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。第二个操作数的类型必须是 int。
<:
所有数值和枚举类型都定义“小于”关系运算符 (<),如果第一个操作数小于第二个操作数,该运算符返回 true,否则返回 false。
>:
所有数值类型和枚举类型都定义“大于”关系运算符 >,如果第一个操作数大于第二个操作数,它将返回 true,否则返回 false。
<=:
所有数值和枚举类型都定义了“小于等于”关系运算符 (<=),如果第一个操作数小于或等于第二个操作数,则该运算符将返回 true,否则返回false。
>=:
所有数值类型和枚举类型都定义“大于等于”关系运算符 >=,如果第一个操作数大于或等于第二个操作数,该运算符将返回 true,否则返回 false。
is:
检查对象是否与给定类型兼容。返回true或false
as:
用于在兼容的引用类型之间执行转换,as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。
==:
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。
!=:
如果操作数相等,则不等运算符 (!=) 返回 false,否则,返回 true。为所有类型(包括字符串和对象)预定义了不等运算符。用户定义的类型可重载!= 运算符。
&:
为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。
^:
为整型和 bool 类型预定义的。对于整型,^ 将计算操作数的按位“异或”。对于 bool 操作数,^ 将计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,结果才为 true。
|:
为整型和 bool 类型预定义的。对于整型,| 计算操作数的按位“或”结果。对于 bool 操作数,| 计算操作数的逻辑“或”结果;也就是说,当且仅当两个操作数均为 false 时,结果才为 false
&&:
条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。
||:
条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,但仅在必要时才计算第二个操作数。
重点说明:
1.&和&&的区别:
&:当两个操作数均为 true 时,结果才为 true。如果第一个操作数为false,也会进行判断第二个操作数。
&&:当两个操作数均为 true 时,结果才为 true。如果第一个操作数为false,则不会进行第二个操作数的判断。
demo:
通过Demo可以看出&操作符中operatorA进行了运算,&&操作符中operatorB没有进行运算。
通过&&的说明“仅在必要时才计算第二个操作数”也进行了说明。
int operatorA = 1; int operatorB = 1; if (false & ++operatorA == 2) { MessageBox.Show("均为true"); } //operatorA 为 2 MessageBox.Show(operatorA.ToString()); if (false && ++operatorB == 2) { MessageBox.Show("均为true"); } //operatorB 为 1 MessageBox.Show(operatorB.ToString());
2.|与||的区别
|:当两个操作数均为false的时候为false,不论第一个操作数是否为true,都会对第二个操作数进行判断
||:当两个操作数均为false的时候为false,如果第一个操作数为true,那么不会进行第二个操作数的判断。
demo:
int operatorA = 1; MessageBox.Show((true | ++operatorA != 2).ToString()); //TRUE MessageBox.Show(operatorA.ToString()); //2 int operatorC = 1; MessageBox.Show((true || ++operatorC != 2).ToString()); //true MessageBox.Show(operatorC.ToString()); //1
3.<<和>>的位运算
<<和>> <<=和>>=都是位运算符
demo
int numA = 10 << 1; /* 结果为20 * <<就是将第一个操作数以二进制的方式向左移动第二个操作位数,均以0补全。 * 转换为2进制 1010 ->10 * 进行位运算 10100 ->20 */ int numB = 10 >> 1; //结果为5 /* 结果为5 * <<就是将第一个操作数以二进制的方式向右移动第二个操作位数。 * 转换为2进制 1010 ->10 * 进行位运算 0101 ->5 */
4.^的说明
二进制计算:
1和1 为0
1和0 为1
0和0 为0
//MessageBox被执行 if (true ^ false) MessageBox.Show("1"); //MessageBox未被执行 if (true ^ true) MessageBox.Show("2"); int numA = 1 ^ 1; //结果为0 /* 按位运算 1-> 1 * 1-> 1 * 0 */ int numb = 2 ^ 1; //结果为3 /* 按位运算 2-> 10 * 1-> 01 * 11 */
5.??和?:的说明
??: 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数
允许??两边的操作数返回不同类型的值
string str=Convert.ToString(DataRow[i] ?? 1);
?:A值与B值必须是同类型,?之前必须返回一个bool类型的值
表达式返回bool?A值:B值。
int numA = 1; int numB = 2; string str = numB == numA ? "1" : "2";
- C# 运算符大全(按照操作数个数分类)
- C#运算符大全
- C#运算符大全
- c# 运算操作符
- Jdom操作xml,按照指定要求分类
- c# 运算符“+”无法应用于“string”和“方法组”类型的操作数
- 运算符操作数与结合性
- 数的组合问题,从n个数中选出m个数,结果按照字典序排列
- C#中的Linq技术标准操作符大全
- C#中的Linq技术标准操作符大全
- c#数据库操作大全
- C#注册表操作大全
- C#文件操作大全
- C#文件操作大全
- C#文件操作大全
- C#文件操作大全
- C#文件操作大全
- C#文件操作大全
- 定制自己的vue模版
- python 实现线性链表(单链表)
- 《Spring Boot in Action》【5. Groovy】
- 微星MSI GP62 6QE
- java eclipse export jar包 和 用maven install jar包运行结果不一样
- C# 运算符大全(按照操作数个数分类)
- 深入分析JavaWeb技术内幕系列之---DNS域名解析过程
- c++ STL map解析
- Android stdio 解决HAXM安装不上问题
- 使用webmagic搭建一个简单的爬虫
- 《Spring Boot in Action》【6. Grails】
- Flex 学习之路之十九 panel面板对话框传值
- [Unity]Unity3D编辑器插件扩展和组件扩展
- 解决python报错IndentationError: expected an indented block的方法