C#学习笔记——数据与运算(一)

1.数据类型

C#数据类型分为两大类:值类型和引用类型。

1.1.值类型

C#中值类型分为三类:简单类型、结构类型和枚举类型。这里先介绍简单类型,结构和枚举会在后面介绍。

1.1.1.整数类型

整数类型顾名思义就是值为整数的数据。在数学中整数是无穷小到无穷大,但是计算机的存储能力是有限的,所以我们要给数据划定一个范围,C#中提供了8种整数类型如表1所示:

表1-C#整数类型列表
类型标识符描述可表示范围
sbyte8位有符号整数-128~+127
byte8位无符号整数0~255
short16位有符号整数-32768~+32767
ushort16位无符号整数0~65535
int32位有符号整数-2147583648~+2147483647
uint32位无符号整数0~4294967295
long64位有符号整数

-223372036854775808~

+223372036854775807

ulong64位无符号整数0~1846744073709551615

1.1.2.浮点类型

既然已经有了整数,那么肯定会有小数,在C#种使用浮点类型表示。

单精度浮点型(float)32位宽,双精度浮点型(double)64位宽。

表2-C#浮点类型列表
类型标识符取值范围精度
float\pm 1.5\times 10^{-45}\sim 3.4\times 10^{38}7位数
doule\pm 5.0\times 10^{-324}\sim 1.7\times 10^{308}15~16位数

1.1.3.小数类型

小数类型(decimal)是高精度类型数据,占用16个字节(128位),主要用于高精度的运算。

表3-C#小数类型列表
类型标识符取值范围精度
decimal\pm 1.0\times 10^{-28}\sim 7.9\times 10^{28}29位数

1.1.4.字符类型

C#的字符类型采用的是Unicode字符集。一个字符的长度位16位,可以表示大部分语言类型,字符类型标识符是char。

‘a'就是一个字符。

一个字符常数中只能含有一个符号且不为单引号或者反斜杠(\)。

转义字符

在字符中有时为了表示一些特殊常数,会使用转义字符来表示,即反斜杠+一个字符表示特殊含义。

表4-C#常用转义符
转义符字符名称
\'单引号
\"双引号
\\反斜杠
\0空字符
\a发出一个警告
\b倒退一个字符
\f换页
\n新的一行
\r换行并移到该行最前面
\t水平方向的tab
\v垂直方向的tab

1.1.5.布尔类型

布尔类型标识符bool,用来表示逻辑真假,只有true和false两种值。

1.1.6.注意问题

  • 数据都有一个取值的范围,一旦长处范围就会报错;
  • 对于浮点类型的+0和-0有时要区别对待;
  • 对于浮点类型如果数据在精度范围内小到一定程度会被系统当作0处理;
  • 数据类型会有重叠的部分可以使用后缀来区分,例如3.14可以是float也可以是double,但是3.14f一定是float,这里的f就是float类型的后缀,同理u表示uint、l表示long、d表示double、m表示decimal等;
  • 前缀可以表示数据的不同进制,0x做为前缀就表示十六进制。

1.2.引用类型

如果我们想要描述更加复杂的数据类型,很显然上述的值类型并不能满足这样的需求,而引用类型就是为了描述结构复杂抽象的数据。引用类型所存储的数据是引用值的地址。如果说值类型是直接把物品拿出来,那么引用类型就是告诉你物品在仓库里的位置。

C#引用类型包含4种:类类型(class-type)、数组类型(array-type)、接口类型(interface-type)、委托类型(delegate-type)。现在主要介绍类类型。

1.2.1.万物之父-object类

object类是C#中所有类型的基类,C#中的所有类型都是直接或间接派生于object类,所以object类也叫万物之父,对于object类型可以赋值任何类型的值。

int x = 1;
char y = 'a';
object obj1, obj2;
obj1 = x;
obj2 = y;

1.2.2.字符串-string类

字符串就是一串字符,是被双引号包含的一系列字符。例如“Hello World!”就是一个字符串,也就是string类型。

string str1 = "你好,";
string str2 = "世界。";
string str3 = str1 + str2; //这里str3存储的是“你好,世界。”
char c = str3[0]; //这里字符c获取到str3的第一个字符“你”

由上面的代码可知,字符串中可以包含中文。

关于转义字符

Console.WriteLine("这是第一行\n这是第二行");
//\n根据上面的转义符表可知是换行操作,所以输出时会有一个换行的操作。

当然也可以直接输出内容忽略转义符,也就是逐字字符常数,也就是在字符串前加上@符号。

Console.WriteLine(@"这是一行\n这还是第一行");
//添加了@符号后,会原原本本的输出字符串中的所有内容,并且可以跨行输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值