C#基础操作符详解(下)

书接上文的基本操作符,下文介绍的是其他操作符:

4.2一元操作符:

只要有一个操作数跟在它后面就可以构成表达式,也叫单目操作符。

①&x和*x操作符(很少见有印象即可):

这两个操作符同样也需要在不安全的上下文中运行:&是取地址操作符。

简单错误:pStu.错误:由于.为基本操作符优先级大于所以是先进行pStu.的操作正确应该为:(*pStu).即加个括号。

②+、-、!、~四个一元操作符:

-运算符可造成内存溢出:

int a = int.MinValue;

int b =checked( -a);//原因在于int.MaxValue与int.MinValue绝对值不一样。

~求反操作符,对操作数转化为2进制,进行二进制的按位取反。

计算机取相反数的原理:先把该数转化为2进制再按位取反+1

!操作符只能用来操作布尔类型的数据,

③++x;–x运算符:单独使用时x++与++x没有区别。

4.3、强制类型转化操作符:(T)x,T表示某种数据类型。

类型转换:

①隐式(implicit)类型转换,常见的为以下三种情况:

*不丢失精度的转换:小字节数(存储空间)的数据类型向多字节(存储空间)的数据类型转换不会丢失精度,比如金鱼从鱼缸里放到游泳池里还是好好的。例如:

int x = int.MaxValue;

long y = x;

这就是在不丢失精度的情况下进行的隐式类型转换,具体哪些数据类型可向哪些无丢失精度类型转换见C#语言定义文档6.1.2:

隐式数值转换为:(原则为从小的向大的转)

l 从 sbyte 到 short、int、long、float、double 或 decimal。

l 从 byte 到 short、ushort、int、uint、long、ulong、float、double 或 decimal。

l 从 short 到 int、long、float、double 或 decimal。

l 从 ushort 到 int、uint、long、ulong、float、double 或 decimal。

l 从 int 到 long、float、double 或 decimal。

l 从 uint 到 long、ulong、float、double 或 decimal。

l 从 long 到 float、double 或 decimal。

l 从 ulong 到 float、double 或 decimal。

l 从 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。

l 从 float 到 double。

从 int、uint、long 或 ulong 到 float 的转换以及从 long 或 ulong 到 double 的转换可能导致精度损失,但决不会影响数值大小。其他的隐式数值转换决不会丢失任何信息。

不存在向 char 类型的隐式转换,因此其他整型的值不会自动转换为 char 类型。

*子类向父类的转换;

例如定义三个互相继承的类:

class Animal
    {
   
        public void Eat()
        {
   
            Console.WriteLine("Eat");
        }
    }
    
    class Human:Animal
    {
   
        public void Think()
        {
   
            Console.WriteLine("think");
        }
    }
    
    class Teacher:Human
    {
   
        public void Teach()
        {
   
            Console.WriteLine("Teach");
        }
 

在main函数中:

 Teacher t = new Teacher();
 Human h = t;//这种就是子类向父类隐式类型换

而h.只能访问Human类的成员,不能访问Teacher类的成员,因为引用变量只能访问它这个变量的类型它所具有的成员,注意是这个变量的类型是(Human)而不是这个变量引用的类型(Teacher)。(简单的比喻比如人的父类是猴子,但猴子的只能做猴子的行为而不能做人类的行为。)

*装箱;见上一节。

②显式(explicit)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值