购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3-4 整数数据类型

3-4-1 整数基本概念

最常见的整数是int,此外还有其他整数的概念,可以参考表3-2。

表3-2 C#整数数据类型表

注1 表3-2中长度的单位是位(bit),8个位等于1个字节(byte)。

注2 表3-2最左侧的字段,是C#的数据类型,又称.NET的别名。例如,整数在C#的数据类型是int,其实在System命名空间下,其类名称是System.Int32。程序设计时用int声明变量和用System.Int32声明变量,意义是一样的,这个概念可以应用到其他数据字段。

短整数(short)的长度是16位,相当于两个字节。整数(int)的长度是32位,相当于4个字节,可以用下图表示。

声明int整数,其语法如下:

此外,还可以在声明整数时设定整型变量的初始值,其实C#语言是鼓励程序设计师在声明变量时同时设定变量的初始值的,当然没有给初始值程序也不会错误。

实例1.系列整数int的声明。

     int i = 1;           // 声明整数 i = 1
     int x, y;            // 声明整数x和y但是没有给初始值

在上述整数的声明中,如果加上“u”,如ushort、uint、ulong,则代表此整数一定是正整数。注:byte也是正整数。

值得注意的是,由于整数int所占内存空间是32位,因此,其最大值是2,147,483,647,如果你有一指令如下:

     int x = 2147483647;
     x = x + 1;

那么经上述指令后,x并不是2,147,483,648,而是-2,147,483,648,通常此种情况称为溢位(overflow),所以选择变量时一定要很小心。

方案3_2.sln: 用程序来真正地了解短整数溢位的概念,同时认识到int与System.Int32概念是相同的。

执行结果

上述程序的执行结果完全验证了表3-2的概念,原x1是int整数,其值是2,147,483,647,常理推知,若将x值加1,x值应变成2,147,483,648,但由程序可知i值变成-2,147,483,648,这就是溢位的概念。

上述第9行使用.NET类型定义变量,这和使用int声明变量的方法相同,这个概念可以应用在其他数据类型。

3-4-2 整数数据类型的属性

表3-2中的每个整数数据类型皆有MinValue和MaxValue属性,此属性可以显示该整数数据类型的最小值和最大值。

方案ch3_3.sln: 列出整数int和长整数long的最小值和最大值。

执行结果

3-4-3 不同进制的整数

C#语言的整数除了我们从小所使用的十进制,也有二进制和十六进制,程序设计时十进制和我们的习惯用法并没有太大的差异。下列是二进制系统、十进制系统和十六进制系统的转换表。

十进制是我们熟知的系统,其他进制系统基本概念如下。

1.十六进制系统:数字到达16就进一位,所以单一位数是0~15,其中10用A表示,11用B表示,12用C表示,13用D表示,14用E表示,15用F表示。

2.二进制系统:数字到达2就进一位,所以单一位数是0~1。

在C#语言中,凡是以0b或0B为开头的整数都被视为二进制数字。

实例1.说出2进制0b110001和0B1110的十进制值。

     0b110001 等于十进制的49;
     0B1110 等于十进制的14;

在C#语言中,凡是以0x或0X开头的整数,皆被视为十六进制整数。

实例2.说明十六进制0x1A和0x20的10进制值。

     0x1A 等于十进制的 26;
     0x20 等于十进制的 32;

在十六进制的表示法中,0x1A和0x1a意义一样的。

方案ch3_4.sln: 分别列出二进制和十六进制值的设定,加总后输出。

执行结果

第6行的WriteLine()函数内参数字符串前方有$字符,在这种状况下,可以使用大括号来内含变量,就可以输出变量内容,其他行的WriteLine()概念一样。

在C#的十六进制整数概念中0x1A和0x1a概念是一样的,本书代码资源中所附的方案ch3_4_1.sln,就是将第9行的0x1A改为0x1a,读者可以加载执行,可以获得一样的结果。

3-4-4 千位分隔符

比较长的数字,不易于理解,这时可以使用“_”作为千位分隔符,适度使用千位分隔符可以让表达的数字比较易于理解。

方案ch3_5.sln: 将千位分隔符应用在二进制和十进制数据上。

执行结果

3-4-5 整数的后缀字符

如果一个整数的后缀字符是u或U,则表示此值的类型是uint或ulong,C#编译程序会由数值大小判断此值的类型,如果此值是在uint可以容纳的范围则此值的数据类型是uint,否则此值是ulong。

如果一个整数的后缀字符是l(小写的L)或L,则表示此值的类型是long或ulong,C#编译程序会由数值大小判断此值的类型,如果此值是在long可以容纳的范围则此值的数据类型是long,否则此值是ulong。注:英文字l(小写的L)容易和阿拉伯数字1混淆,所以建议使用L。

3-4-6 sizeof()

函数sizeof()可以回传数据类型的内存大小,所回传的单位是字节(Byte)。

参数不可以使用变量名称,必须是数据类型。

方案ch3_6.sln: 列出以下整数数据所需的内存大小。

执行结果 0p0LtYUxmwA0LhmHlfq2+akSgT4nZv/EXllkurvbvdLXP2+/EWBdKToJlr59dCw/

点击中间区域
呼出菜单
上一章
目录
下一章
×