2数值类型.docx
- 文档编号:4163624
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:18
- 大小:50.82KB
2数值类型.docx
《2数值类型.docx》由会员分享,可在线阅读,更多相关《2数值类型.docx(18页珍藏版)》请在冰豆网上搜索。
2数值类型
1.1数值类型
程序处理的对象是各种各样的数据,因此,我们必须让计算机了解需要处理什么样的数据,以及采用哪种方式进行处理,按什么格式进行保存等等。
比如,在编码程序中需要处理单个字符,在定购票系统需要打印货币金额,在科学运算中我们需要不同精度的小数,这些都是不同的数据类型。
C#将数据分为不同的类型,它们分别表示不同范围、不同精度、不同用途的数据。
将数据分类是由于不同类型的数据在计算机内占用的内存空间大小不同、运算速度不同。
为了有效利用计算机的内存资源和达到最佳的程序运行效果,需要根据不同形式数据的大小和特征来选择最合适表示它们的数据类型。
C#语言的数值类型包括了由整数类型、浮点数类型、小数类型、字符型、布尔型组成的简单类型和由结构、枚举等组成的构造类型。
1.1.1整数类型
整数类型是指那些没有小数部分的数字,包括整数常量和整数变量。
整数常量即整数类型的常数,一般包括以下两种形式。
●十进制数:
348、-56、0等。
●十六进制数:
这类数据以“0x”(其中0是数字0)开头,如:
0x61,相当于十进制数据97。
整数类型又有有符号整数与无符号整数。
有符号整数可以带正负号,无符号整数不需带正负号,默认为正数。
顾名思义,整数类型的变量的值为整数。
数学上的整数可以从负无穷大到正无穷大,但是由于计算机的存储单元是有限的,所以计算机语言提供的整数类型的值总是在一定的范围之内。
根据变量在内存中所占的二进制位数不同和是否有符号位,C#语言中整数类型分八种:
字节型(sbyte)、无符号字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)。
所占的二进制位数不同,表示的数值的取值范围也不同,所占的二进制位数越多,表示的数值的取值范围越大。
比如说8位整数,它可以表示2的8次幂个数值,即256个不同的数值,如果用来表示有符号8位整数(sbyte),其取值范围就是在-128到127之间,而如果用来表示无符号8位整数(byte),其取值范围就是在0到255之间。
具体各整数类型及其取值范围见表2-2。
表2-2整数类型及其取值范围
数据类型
特征
取值范围
示例
sbyte
有符号8位整数
-128~127
sbyteval=16;
byte
无符号8位整数
0~255
byteval=16;
short
有符号16位整数
-32,768~32,767
shortval=16;
ushort
无符号16位整数
0~65,535
ushortval=16;
int
有符号32位整数
-2,147,483,648
~2,147,483,647
intval=16;
uint
无符号32位整数
0~4,294,967,295
uintval1=16;
uintval2=16U;
long
有符号64位整数
-9,223,372,036,854,775,808
~9,223,372,036,854,775,807
longval1=16;
longval2=16L;
ulong
无符号64位整数
0~18,446,744,073,709,551,615
ulongval1=16;
ulongval2=16U;
ulongval3=16L;
ulongval4=16UL;
1.1.2字符类型
可使用关键字char来定义字符类型数据。
char类型的变量占用2个字节的内存,其中存储的数字(对应某个ASCII码或Unicode码)被解释为一个字符。
字符变量用来存放字符常量,请注意只能放一个字符。
举例:
charch1=’a’;
charch3=(char)97;//97是字符a对应的ASCII码
【例2-4】输出26个大写字母。
大写字母的ASCII码范围为65~90,小写字母的ASCII码为97~122。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
intnum;
charch;
for(num=65;num<=90;num=num+1)
{
ch=(char)num;//将整数转换为字符
Console.WriteLine("{0}is{1}",num,ch);
}
}
}
图2-4例2-4运行结果
1.1.3浮点数类型
浮点数类型,又叫实数类型,是指带有小数部分的数字。
浮点数类型数据同样也包括了常量和变量,定义这种类型的常量和变量的格式同上述整数类型。
C#支持float和double两种浮点数类型。
1.float型(单精度类型)
float数据类型使用4个字节的内存来存储数字。
注意:
floattestfloat=23.03;这样写是错误的,因为C#中默认的数值数据类型为double.一定要在数字后加上F才行。
长类型到短类型的转换需要强制进行。
floattestfloat=23.03F;//这样写才是正确的。
2.double型(双精度类型)
double类型的变量占用8个字节的内存,double型精度为15~16位有效数字。
【例2-5】从键盘输入两个浮点数,然后输出这两个数相加的结果(要求小数后取4位)。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
floatf1,f2;
strings;
Console.WriteLine("请输入浮点数1:
");
s=Console.ReadLine();//从键盘读入字符串
f1=Convert.ToSingle(s);//将字符串转换为float类型
Console.WriteLine("请输入浮点数2:
");
s=Console.ReadLine();
f2=Convert.ToSingle(s);
Console.WriteLine("{0}+{1}={2:
F4}",f1,f2,f1+f2);
}
}
1.1.4布尔型
布尔类型是一种用来表示“真”和“假”的逻辑数据类型。
布尔类型占用1个字节的内存。
布尔类型变量只有两种取值:
true代表“真”,false代表“假”,true或false是C#关键字。
例如:
boolisExist=false;
boolb=(i>0&&i<10);
【例2-7】使用bool类型。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
boolb;
b=false;
Console.WriteLine("bis{0}",b);
b=true;
Console.WriteLine("bis{0}",b);
//一个布尔值能够控制if语句
if(b)
Console.WriteLine("bisTrue");
else
Console.WriteLine("bisFalse");
//关系运算符的结果是一个布尔值
Console.WriteLine("10>9is{0}",(10>9));
}
}
1.1.5字符串
字符串类型的变量是由关键字string来定义的,它是类System.String的别名。
字符串类型也有常量和变量之分。
字符串变量由关键字string来定义,而字符串常量和字符常量很相似,所不同的就是字符常量是用单引号‘’来表示,而字符串常量要用双引号“”表示。
另外,一个字符常量只能由一个字符组成,而字符串常量可以由一个或多个字符组成。
除了上述描述的字符串常量的形式外,还可以指定一种逐字字符串常量。
逐字字符串常量以@开始,引号内的内容可以包含新行、制表符等,而不必使用转义序列。
唯一的例外是,如果要在文本中要包含双引号”,就必须在一行中使用一对双引号””。
如:
Stringstr=@"Hello\world";
【例2-8】使用字符串数据类型。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
stringa="Hello";//定义字符串并赋值
stringb="world";
stringc;
c=a+b;//连接a、b字符串
Console.WriteLine(c);
Console.WriteLine(c.Length);//输出字符串的长度
}
}
1.2运算符和表达式
应用程序使用运算符来处理用户输入的数据,运算符(如+和-)用于处理变量并返回值。
运算符是一组用于计算或比较的一个或多个字符,运算符可以将一个或多个数据值(称为操作数)转换成新的数据值。
表达式(expression)是可以进行运算并能够产生值的式子,是操作数与运算符按照一定的规则的组合,计算的结果称为此表达式的值。
操作数是运算的对象,可以是任意常量、变量、方法等等。
运算符是具体要执行的操作。
下面是表达式的示例:
doublePi=3.1415926;
doubler=10.0;
doublearea;
area=Pi*r*r;
该例中声明圆周率Pi的值为3.1415926,圆半径r的值为10.0,圆的面积area为Pi*r*r,式子Pi*r*r就是一个表达式,计算出来的结果4712就是表达式的值。
1.2.1赋值运算符及其表达式
赋值运算就是给一个变量赋一个新值。
赋值运算符的左操作数必须是一个变量。
表2-4列出了操作符的用法并描述了常用的赋值操作符。
表2-4常用的赋值操作符
操作符
用法
描述
=
X=5;
在变量X中存储值5
+=
X+=5;
等同于:
X=X+5;
-=
X-=5;
等同于:
X=X-5;
*=
X*=5;
等同于:
X=X*5;
/=
X/=5;
等同于:
X=X/5;
%=
X%=5;
等同于:
X=X%5;
【例2-12】赋值运算。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
intop1=10;
intop2=20;
intresult;
result=op1+op2;
Console.WriteLine(result);
result+=10;//相当于result=result+10;
Console.WriteLine(result);
}
}
1.2.2算术运算符及其表达式
算术运算符包括基本算术运算符+、-、*、+、/、%和一元操作符自加、自减运算符“++、--“等。
算术表达式就是用算术运算符将操作数连接起来的算式。
表2-5描述了常用的算术操作符。
表2-5常用的算术操作符
操作符
描述
示例
+
用于两个数相加
X=Y+Z;
如果Y等于20,Z等于2,则X的值是22。
-
用于两个数相减
X=Y-Z;
如果Y等于20,Z等于2,则,X的值是18。
*
用于两个数相乘
X=Y*Z;
如果Y等于20,Z等于2,则X的值是40。
/
用于一个数除以另一个数
X=Y/Z;
如果Y等于21,Z等于2,则X值为10。
如果Y等于21.0,则Z等于2,则X为10.5。
%
用于两个数相除并返回余数,余数是指除法运算后剩余的小于除数的未除尽部分。
X=Y%Z;
如果Y等于21,Z等于2,则X的值为1。
一元操作符用于增加或减少操作数1。
表2-6说明了增加和减少操作符的用法。
表2-6增加和减少操作符的用法
操作符
用法
描述
示例
++
++操作数;
(前置操作符)
或
操作数++;(后置操作符)
用于将操作数的值增加1。
Y=++X;
如果X的初始值为5,则执行前置语句后,X和Y的值都是6。
Y=X++;
如果X的初始值是5,则执行后置语句后,X值是6,Y值是5。
--
--操作数;
(前置操作符)
或
操作数--;(后置操作符)
用于将操作数的值减1。
Y=--X;
如果X的初始值为5,则执行前置语句后,X和Y的值都是4。
Y=X--;
如果X的初始值是5,则执行后置语句后,X值是4,Y值是5。
注意前置操作符与后置操作符的不同:
●Y=++(或--)x:
先将x值做++(或--)运算,然后再赋值给y;
●y=x++(或--):
先将x值赋给y,然后再将x值做++(或--)运算。
【例2-13】加法运算。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine(8+8);//数字加法
Console.WriteLine("8+0.8");//字符串原样输出
Console.WriteLine("a"+"a");//字符串加法
Console.WriteLine(8.3+"a");//混合类型相加
Console.WriteLine(8+'a');//字符和数字混合相加
Console.WriteLine(8.3+'a');//数字和字符相加
}
}
【例2-15】自增和自减运算。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
doublex;
x=1.5;
Console.WriteLine(++x);//自增运算,x先加1再输出
x=1.5;
Console.WriteLine(x++);//自增运算,x先输出再加1
x=1.5;
Console.WriteLine(--x);//自减运算,x先减1再输出
x=1.5;
Console.WriteLine(x--);//自减运算,x先输出1再减
}
}
【例2-16】己知a=l,b=2,c=3,x=2,计算y=a*x^2+bx+c之值。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
inta=1,b=2,c=3,x=2,y;
y=a*x*x+b*x+c;
Console.WriteLine("y={0}",y);
}
}
【例2-17】取余运算。
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine(0%2);
Console.WriteLine(1%2);
Console.WriteLine(5%2);
}
}
1.2.3关系运算符及其表达式
关系运算符可以它理解为一实种“判断”,判断的结果关系运算要么是“真”,要么是“假”,也就是说关系表达式的返回值总是布尔类型。
C#语言提供的关系运算符有六个:
==!
=<<=>>=
由操作数和关系运算符组成的表达式就是关系表达式。
关系运算符用于比较两个值并且在比较结果的基础上执行某个操作。
表2-7介绍了常用的比较操作符的用法。
表2-7常用的比较操作符
操作符
用法
描述
示例
(在以下示例中,X的值假设为20,Y的值假设为25)
<
表达式1<表达式2
用于检查表达式1是否小于表达式2
boolResult;
Result=X 结果值为true。 > 表达式1>表达式2 用于检查表达式1是否大于表达式2 boolResult; Result=X>Y; 结果值为false。 <= 表达式1<=表达式2 用于检查表达式1是否小于等于表达式2 boolResult; Result=X<=Y; 结果值为true。 >= 表达式1>=表达式2 用于检查表达式1是否大于等于表达式2 boolResult; Result=X>=Y; 结果值为false。 == 表达式1==表达式2 用于检查表达式1是否等于表达式2 boolResult; Result=X==Y; 结果值为false。 ! = 表达式1! =表达式2 用于检查表达式1是否不等于表达式2 boolResult; Result=X! =Y; 结果值为true。 1.2.4逻辑运算及其表达式 逻辑运算符是用来进行布尔表达式计算的。 在C#语言中提供的逻辑运算符主要有三种: 逻辑与“&&”、逻辑或“||”和逻辑非“! ”。 逻辑运算符对表达式a和b的操作见表2-8。 表2-8逻辑运算表 a b a&&b a||b ! a false false false false true false true false true true true false false true false true true true true false 1.&&运算 “&&”运算符表示逻辑“与”,它被用于判断是否同时满足两个或两个以上的条件的时候。 其操作数可以是布尔类型变量或关系表达式。 例如,在数学中,判断变量x是否在开区间(1,10)中,C#语句可表示为: If(x>1)&&(x<10) 如果变量y的值为true,则表明变量x的值在开区间(1,10)。 “&&”的短路特性: 在一个“与”操作中,如果第一个操作数是假,则不管第二个操作数是什么值,结果都是假。 例如: 逻辑表达式a&&b&&c,只有a为true时,才需要判断b的值;只有a和b都为true的情况下才需要判别c的值;只要a为false,就不必判断b和c;如果a为true,b为false,不判断c。 2.||运算 ||运算符表示逻辑“或”,它用来判断是否满足两个或两个以上的条件之一,其操作数可以是布尔类型变量或关系表达式。 例如,判断变量x是否满足小于1,或者大于10,其C#语句可写为: Booly=(x<1)||(x>10); 如果变量y的值为true,则表明变量x的值或者小于1,或者大于10。 “||“的短路特性: 在一个或操作中,如果第一个操作数是真,则不管第二个操作数是什么值,结果都是真。 3.! 运算 “! ”运算符是一个一元运算符,表示逻辑非。 同样,其操作数可以是布尔类型变量或者关系表达式。 例如判断变量x是否不小于100时,C#语句可写为: booly=! (x<100) 如果变量y的值为true,则表明变量x的值不小于100。 1.2.5条件运算符及其表达式 条件运算符“? : ”是唯一的一个三目运算符,它需要3个操作数。 条件运算表达式的一般格式是: 关系表达式? 表达式1: 表达式2 功能: 如果关系表达式的值是true,则条件运算表达式得到的值为表达式l的值,否则为表达式2的值。 【例2-18】 usingSystem; classProgram { staticvoidMain(string[]args) { inta=20; intb=50; intmax=(a>b)? a: b; Console.WriteLine("较大值为{0}",max); } } 运行结果如图2-18所示。 图2-18例2-18运行结果 说明: 语句intmax=(a>b)? a: b的执行过程是: 如果a>b为true,则条件表达式的值为a,即max的值为a;否则max的值为b;也就是说,max变量的值取a、b中较大的值。 1.2.6运算符的优先级 当表达式中包含多个运算符时,运算符的优先级控制各运算符的计算顺序。 例如,表达式x+y*z按x+(y*z)计算,因为*运算符具有的优先级比+运算符高。 表2-9按照从最高到最低的优先级顺序概括了所有的运算符: 表2-9运算符优先级表 运算符类别 运算符 基本 x.yf(x)a[x]x++x--newtypeofcheckedunchecked 一元 +-! ~++x--x(T)x 乘法 */% 加法 +- 移位 <<>> 关系和类型检测 <><=>=isas 相等 ==! = 逻辑AND & 逻辑XOR ^ 逻辑OR | 条件AND && 条件OR || 条件 ? : 赋值 =*=/=%=+=-=<<=>>=&=^=|= 说明: 建议在写表达式的时候,如果无法确定运算符的有效顺序,则尽量采用括号来保证运算的顺序,这样编程时才能够做到思路清晰,编写的程序一目了然。 1.3应用实例 【例2-14】从键盘输入两个数,计算并显示结果。 初步流程图如图所示。 当采取上述步骤时,计算机接收第一个数字(又称为值),并把它存储在内存中。 然后计算机接收第二个值并把它存储在内存中。 执行第三步时,计算机访问此前存储在内存中的两个值,执行运算,再把运算的结果也存储在内存中。 为显示结果,计算机访问存储该结果的内存位置。 图2-13流程图 变量名 含义 num1 存放第一个数 num2 存放第二个数 sum 存放两数和 使用变量的流程图如图所示。 图2-13使用变量的流程图 代码实现如下: usingSystem; classProgram { staticvoidMain(string[]args) { intnum1,num2,sum; Console.Write("请输入数字1: "); num1=Convert.ToInt32(Console.ReadLine());//从键盘读入字符串并转化为整数 Console.Write("请输入数字2: "); num2=Convert.ToInt32(Console.ReadLine()); sum=num1+num2; Console.WriteLine("{0}+{1}={2}",nu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 类型
![提示](https://static.bdocx.com/images/bang_tan.gif)