AI智能
改变未来

C#学习总结(4)—C#运算符与数据类型转换


运算符与数据类型转换

1.简介
运算符是具有运算功能的符号,根据使用操作数的个数,将运算符分为分为单目运算符、双目运算符和三目运算符。单目运算符是作用在一个操作数上的运算符,如正负号等;双目运算符是作用在两个操作数上的运算符,如加减乘除等;三目运算符是作用在三个操作数上的运算符,C#中只有唯一的三目运算符它是条件运算符(? : )。

2.算术运算符
C#中的算术运算符是双目运算符,主要有+、-、*、/和%(模、求余数)5种。
注:/和%运算时,除数不能为0。

3.自增、自减运算符
自增、自减运算符是单目运算符,有++i,i++,–i,i–4种。
注:自增、自减运算符只能作用于变量。

4.赋值运算符
赋值运算符主要用来为变量等赋值,它是双目运算符。这主要分为两种:简单赋值运算符和复合赋值运算符。
①简单赋值运算符
以“=”表示,功能是将右边的值赋给左边。
②复合赋值运算符
复合赋值运算符又叫带运算的赋值运算符,它将赋值运算符和其他运算符合并成一个运算符使用。

它的优点:
低精度类型自增运算,例,

byte a = 1;a =a+ 1;  //报错,因为a+1默认为int类型a += 1;   //不报错

5.关系运算符
关系运算符是双目运算符,它用在变量之间以及其他类型的对象之间的比较,它返回一个布尔值。关系运算符共有6个。

6.逻辑运算符
逻辑运算符是对真和假这两种布尔值进行运算,运算后的结果为一个布尔值。它主要包括&(&&)(逻辑与)、|(||)(逻辑或)、!(逻辑非)。!为单目运算符,其余为双目。
下面是逻辑运算符的用法和运算结果:


区别:“&&”属于“短路”运算符,而“&”属于“非短路”运算符。
短路运算符:如果第一个表达式的结果为假,可以代表结果,就不去判断第二个表达式。
非短路运算符:无论什么情况都要判断所有的表达式,再输出结果。

7.位运算符
位运算符的操作数类型是整型,可以有符号也可以没有。它有位与、位或、位异或和取反运算符四种,其中前三种为双目运算符,最后一种为单目运算符。在使用位运算符时,要将执行运算的数据转换为二进制,然后进行运算。
①位与运算
位与运算的运算符为“&”,它的运算法则是:两个整型数据二进制对应位都是1才为1,否则为0。如果两个数的精度不同,则结果的精度与精度高的操作数相同。例,
②位或运算
位或运算的运算符为“|”,它的运算法则是:两个整型数据二进制对应位都是0才为0,否则为1。如果两个数的精度不同,则结果的精度与精度高的操作数相同。例,

③位异或运算
位异或运算的运算符为“ ^ ”,它的运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1。如果两个数的精度不同,则结果的精度与精度高的操作数相同。例,
④取反运算
取反运算(又叫按位非运算)的运算符为“~”,它的运算就是将操作数二进制位上的0改为1,1改为0。例,

注:逻辑运算符是对表达式或者说是表达式产生的布尔值进行运算,而位运算符是对整型数据进行运算,整型数据不能转换为布尔值。

8.移位运算符
C#中的移位运算符有2个,分别是左移<<和右移>>,它们都是双目运算符,主要是对整型数据进行移位操作。移位运算符的右操作数不可以是负数,并且要小于左操作数的位数。
①左移运算符<<
左移运算符是将一个二进制数向左移动指定的位数,左边溢出的位被丢弃,右边的空位用0补充。左移运算相当于乘以2的n次幂。(n为移位的个数)例,

②右移运算符>>
右移运算符是将一个二进制数向右移动指定的位数,右边溢出的位被丢弃,左边的空位如果是正数填0,如果是负数填1。右移运算相当于除以2的n次幂。例,


注:移位运算的速度很快,所有在遇到乘以或除以2的n次幂时,可以选择使用移位运算。

9.条件运算符
条件运算符用“?:”表示,它是C#中唯一的三目运算符。语法:

表达式1?表达式2:表达式3

如果表达式1为true,返回表达式2的结果,否则返回表达式3的结果。
注:此运算符的结合性是右结合性,即从右向左运算。

10.数据类型转换
类型转换是将一个值从一种数据类型转换为另一种数据类型的过程。数据类型转换有2种方式:隐式转换和显示转换。隐式转换是从低精度数据类型向高精度数据类型转换,这永远不会溢出,且总是成功的。显示转换是从高精度数据类型向低精度数据类型转换,这必然会有信息丢失,甚至有可能失败。

11.隐式类型转换
下面这幅图代表了隐式转换,这会自动进行。其中,char类型比较特殊,它可以与部分int类型进行兼容,且精度不发生变化。

12.显示类型转换
下面的例子在进行隐式转换时会出现错误:

遇到上面的类型转换就要使用显示类型转换。显示类型转换又叫强制类型转换,它要在代码中声明要转换的类型。语法:

(类型说明符) 表达式

这是将表达式的运算结果强制转换成类型说明符所表示的类型。例,

long a=13;int b=(int)a;

13.使用Convert类进行转换
在进行显示类型转换时,如果要转换的值超出了类型说明符所代表的范围就会出现错误(这个错误不会显示)。在C#中提供了Convert类,它将一个基本数据类型转换为另一个基本数据类型,且会将范围超出的错误显示。常用方法及说明:

14.运算符的优先级和结合性

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C#学习总结(4)—C#运算符与数据类型转换