• .net 数据类型


    short s=0;
    s = s + 1;

    short s=0;
    s += 1;

    这两个表达式有什么区别,会报什么错误?

     有区别吗??大家要想想呢还是要测试一下啊,我选择测试!

    经过测试:

    第一个会报错:错误 1 无法将类型“int”隐式转换为“short”。存在一个显式转换(是否缺少强制转换?) E:\MVC\Test\Test\Form1.cs 40 17 Test

    第二个通过编译,运行正常。

    后来找到解释:

    s = s + 1; 由于 1 默认是int型的,s是short的,"s+1"的结果默认是int的,把int的结果赋值给short时会报错,损失精度了,必须写成 s = (short)(s+1) 来强制转化一下

    s+=1; 在编译时已经明确最后要赋值给s,即short型的,所以会在内部自动进行转换的,

    自动转换一般从低的往高的转换,所以第一个会报错。

    C#是基于Microsoft的.net框架的,他的基础部分就是共享的通用类型系统(CTS,Common Type System)。下面是C#和java数据类型的等价类型。

     c#数据

    类型

    java数据

    类型 

    运行时

    类型

    大小

    (字节)

    范围  描述 
     bool   boolean   Boolean  n/a  true or false  布尔值 
     byte    Byte  1  0~255  无符号整数
     char  char  Char  2  0x0000~0xffff  Unicode字符
     decimal     Decimal  

     -79,228,162,514,264,337,593,543,950,335~

    79,228,162,514,264,337,593,543,950,335

     十进制数字
     double  double  Double  8

     -1.79769313486232e308~

    1.79769313486232e308

     双精度64位数字
     float  float  Single  4  -3.402823e38~3.402823e38  单精度32位数字
     int  int  Int32  4  -2,147,483,648~2,147,483,647  有符号整数
     long  long  Int64  8

     -9,223,372,036,854,775,808~

    9,223,372,036,854,775,807

     有符号整数
     sbyte  byte  SByte  1  -128~127  有符号整数
     short  short  Int16  2  -32768~32767  有符号整数
    unit    UInt32  4  0~4,294,967,295  无符号整数
     ulong    UInt64  8  0~184,467,440,737,095,551,615  无符号整数
     ushort    UInt16  2  0~65535  无符号整数

    在c#中,所有书类型也都是System的一部分,可以在其中引用。如bool可以引用为System.Boolean

  • 相关阅读:
    epoll的LT和ET模式
    linux搭建java环境
    【第三方SDK】百度地图实现最简单的定位功能(无地图界面)
    闲云控制台(二)查看文件功能,支持十六进制查看文件
    ios8 swift开发:显示变量的类名称
    cocos2dx的runAction: 反复运行,多个动作连接运行,多个动作同一时候运行的实现
    myeclipse设置凝视
    2-06. 数列求和(20)(ZJUPAT 数学)
    【IPC进程间通信之四】数据复制消息WM_COPYDATA
    条件熵定义推导公式
  • 原文地址:https://www.cnblogs.com/weixing/p/net.html
Copyright © 2020-2023  润新知