本章主要讲解C#中的
基本数据类型与表达式本章要点:
Visual C# .NET数据类型概述Visual C# .NET简单数据类型的使用Visual C# .NET的常量和变量Visual C# .NET的运算符与表达式Visual C# .NET的常用方法一、Visual C# .NET的标识符在Visual C# .NET中定义标识符时,必须符合以下命名规则。
(1)标识符必须是由字母、数字、下划线组成的一串符号,且必须以字母或下划线开头。
(2)由于标识符代表对象的名称,所以用户在选取标识符时应选取有意义的字符序列,以便在程序中能从标识符看出所标识的对象,从而便于阅读和记忆。
(3)用户定义的标识符不能与C#语言的关键字同名。
二、Visual C#.NET的数据类型简介 简单数据类型
1.整数数据类型
2.字符数据类型
C#的字符类型有以下特点:
(1)每个字符占2个字节。
(2)C#中的字符型与整型之间不能再像C/C++中自动转换。以下语句在C#中不合法:char c=13; 不过用户依旧可以将一个整型数显式地转换为一个字符数据类型,然后赋值给字符变量。如下:
char c=(char)13;
3.布尔类型
布尔类型(bool)只含有两个数值:true和false。
4.实数类型
实数类型又称浮点型,C#中的浮点型包含单精度浮点型
(float)和双精度浮点型(double)两种。
(1)单精度型:取值范围为~之间,精度为7位数。
(2)双精度型:取值范围为~之间,精度可达15到16位。
使用实数类型,需注意以下几个问题:
(1)存在正0和负0 。
(2)存在正无穷大和负无穷大,一般产生在除数为0的情况下,例如,1.2/0.0的结果是正无空大,-1.2/0.0的结果为负无空大。
(3)存在非数字值(Not-a-Number,简称NaN)。当出现0.0/0.0这种非法运算的时候就会出现非数字值。
(4)对于浮点运算,如果运算结果的绝对值在精度范围内小到一定程度,系统就会当做0值处理(+0 或-0)。
5.小数类型
又称十进制类型,其类型说明符为decimal,主要用于金融领域,又称金融类型,其表示的值的范围大约是到 ,比float类型小,但是其精确度却可以达到28到29位。
在十进制类型的数据的后面加上“m”,表示该数据是小数类型,如0.1m、123.9m等。
三、常量与变量 1.常量
常量又叫常数,是在程序运行过程中其值不改变的量。常量也有数据类型,在C#语言中,常量的数据类型有多种,分别是:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string等。
符号常量声明的格式如下。
[格式]:[常量修饰符] const类型说明符常量名=常量表达式;
例如:
public const intA=1,B=3;
与C/C++类似,在C#中,一个常量可以依赖于另一个符号常量,但不能形成循环依赖,例如:
class ConstExample
{
public const int A=1;
public const int B=A+2;
}
注意:常量是静态的,能够在类中访问。
【例2-1】分析下列程序的执行结果。
[程序代码]
class ConstExample
{
public const int A=1;
public const int B=(A+2)*(A+3);
public static void Main()
{
System.Console.WriteLine("A={0},B={1}",ConstExample.A,ConstExample.B);
}
}
[程序分析]
本题在类ConstExample中定义了两个常量A和B,它们之间不存在相互依赖的关系,常量是静态的,可以直接访问。所以最后输出的结果是1和12。
2.变量
(1)变量的含义及其定义
变量是指在程序运行过程中其值可以发生变化的量。
定义变量的一般格式如下。
[格式]:[变量修饰符] 类型说明符 变量名1=初值1,变量名2=初值2,…;
例如,有以下变量定义语句:
private static int gz=65;
public double jj=76.8;
(2)静态变量和实例变量
声明变量时,使用static关键字声明的变量为静态变量。静态变量只需创建一次,在后面的程序中就可以多次引用。静态变量的初始值就是该变量类型的默认值。
实例变量是指在声明变量时没有使用static变量说明符的变量,也称普通变量。实例对象在指定的对象中被声明并分配空间,如果实例变量所在的对象被撤消了,该变量也就从内存中被清除了。
【例2-2】分析下列程序的运行结果。
[程序代码]
using System;//引入命名空间
class StaticTest//定义类
{
public static int sta1=10;//定义静态变量,该变量只创建一次,由类名访问
public int a2=10;//定义实例变量,每创建一个实例时,均创建一个变量
}
class StaticExample
{
public static void Main()
{
StaticTest A,B;//定义类的变量
A=new StaticTest();//创建类的实例A
B=new StaticTest();//创建类的实例B
StaticTest.sta1=StaticTest.sta1+10;//通过类名给静态变量赋值
A.a2=A.a2+10;//给实例A的成员a2赋值
StaticTest.sta1=StaticTest.sta1+10;//通过类名给静态变量赋值
B.a2=B.a2+20;//给实例B的成员a2赋值
//输出静态变量和实例A的成员a2的值
Console.WriteLine("StaticTest.sta1={0},A.a2={1}",StaticTest.sta1,A.a2);
//输出静态变量和实例B的成员a2的值
Console.WriteLine("StaticTest.sta1={0},B.a2={1}",StaticTest.sta1,B.a2);
}
}
(3)局部变量
局部变量是临时变量,它只是在定义它的块内起作用,所谓块是指大括号“{”和“}”之间的所有内容。
局部变量从被声明的位置开始起作用,当块结束时,局部变量也会随着消失。
使用局部变量需注意初始化问题,局部变量需要人工赋值后才能使用
【例2-3】分析下列程序的运行结果。
[程序代码]
using System;
public class LocalTest
{
public static void LocalExample()
{
int i=210,k;//定义局部变量i和k
k=i*2; //给局部变量k赋值
Console.WriteLine("i={0},k={1}",i,k); //输出i和k的值
}
public static void Main()
{
LocalExample();//调用函数
Console.WriteLine("i={0},k={0}",i,k);//此语句将产生错误
}
}
四、运算符与表达式 1.运算符与表达式概述
(1)运算符和表达式的概念
C#中各种运算是用符号来表示的,用来表示运算的符号称运算符。用运算符把运算对象连接起来的有意义的式子称为表达式,每个表达式的运算结果是一个值。
(2)运算对象和运算符的“目”
运算符必须有运算对象,根据运算对象的多少可以把运算符分成单目运算符、双目运算符和三目运算符。
(3)运算符的优先级和结合性
计算下面的表达式:
3+5*2
大家都知道先算“*”号再算“+”号,其实这里就涉及到运算符的优先级问题。即当表达式中出现多个运算符,计算表达式值时,必须决定运算符的运算次序,我们把这个问题称为运算符的优先级。
有如下的表达式:
Sb*(a-c)
该表达式应先算括号内的“a-c”,然后再用b乘上“a-c”的运算结果。当在一个表达式中出现多个同级别的运算符时,应先算谁呢?这就涉及到运算符的结合性
2.算术运算符与算术表达式
(1)基本算术运算符
(2)增1(++)减1(--)运算符
[程序代码]
using System;
class ArthTest
{
public static void Main()
{
int n=10,m=3;
float f=5.0F,g=10.0F;
double d=5.0,e=10.0;
Console.WriteLine("n+m={0},n-m={1},n*m={2},
n/m={3},n%m={4}",n+m,n-m,n*m,n/m,n%m);
Console.WriteLine("d+e={0},d-e={1},d*e={2},d/e={3}",d+e,d-e,d*e,d/e);
Console.WriteLine("n+m-f*g/d={0}",n+m-f*g/d);
Console.WriteLine("n%m*f*d={0}",n%m*f*d);
}
}
【2-5】分析下列程序的运行结果。
[程序代码]
using System;
class AddSub
{public static voidMain()
{int a=4,b=5,m,n;//①
m=a+++b++;//②
n=a+b;//③
Console.WriteLine("m={0}n={1}",m,n);//④
m=++a+(++b);//⑤
n=a+b;//⑥
Console.WriteLine("m={0}n={1}",m,n);//⑦
}
}
3.关系运算符与关系表达式关系运算符均是双目运算符,它们的优先级和结合性如下:
优先级:
(1)算术运算符 优于关系运算符
(2)<、<=、 >、 >=优于 == !=
结合性:
<、<=、 >、 >=等运算符同级,结合性自左向右。==、!=等运算符同级,结合性自左向右。
【2-6】分析下列程序的运行结果。
[程序代码]
using System;
class CompOP
{public static void Main()
{int i=1,j=7; //①
char c1='A',c2='a'; //②
Console.WriteLine("{0},{1},{2}",i >j,i >=j,i<=j); //③
Console.WriteLine("{0},{1},{2}",c1 >c2,c1 >=c2,c1<=c2); //④
}
}
4.逻辑运算符与逻辑表达式逻辑运算符的优先级和结合性如下:
优先级:
(1)逻辑非(!)是单目运算符,优于双目运算符;
(2)逻辑与(&&)和逻辑或(||)是双目运算符,其优先级如下:
双目算术运算符优于关系运算符优于 && 优于 ||
结合性:
(1)逻辑非!和单目算术运算符是同级的,结合性自右向左;
(2)逻辑与(&&)和逻辑或(||)是双目运算符,其结合性是自左向右。
【2-7】分析下列程序的运行结果。
[程序代码]
using System;
class LTest
{public static void Main()
{intx=3,y=5,a=2,b=-3;
Console.WriteLine("a >b && x<y={0}",a >b && x<y);//①
Console.WriteLine("!(a >b) && !(x >y)={0}",!(a >b) && !(x >y));//②
Console.WriteLine("!(a >x) || !(b < y)={0}",!(a >x) ||!(b < y));//③
}
}
5.位运算符 位运算符用来对操作数进行位运算,其运算对象是整型和字符型。
(1)位逻辑运算符
①位与运算符(&)
②位或运算符(|)
③异或运算符(^)
④取反运算符(~)
(2)位移位运算符
①左移运算符(<<)
②右移运算符( > >)
位运算符在表达式中的优先级可概括成如下几点:
①位反(~)运算符为单目运算符,优于所有的双目运算符和三目运算符。
②位移位运算符优先级相同,比算术运算符的优先级低,比关系运算符的优先级高。
③位逻辑运算符的优先级比关系运算符的优先级低,比逻辑运算符的优先级高。
④三个位逻辑运算符的优先次序为:&优于 ^优于|
【2-8】分析下列程序的运行结果。
[程序代码]
using System;
class WeiTest
{ public static void Main()
{ char y,x;
x=(char)0x9d; y=(char)0xa5;
Console.WriteLine("x&y={0}",x&y);
Console.WriteLine("x|y={0}",x|y);
Console.WriteLine("x^y={0}",x^y);
Console.WriteLine("x > >2={0}",x > >2);
Console.WriteLine("x<<2={0}",x<<2);
}
}
6.赋值运算符与赋值表达式 赋值运算符的优先级与结合性如下。
优先级:在C#语言中,所有的赋值和自反赋值运算符的优先级都是一样的,比所有的其它运算符的优先级都低,是优先级最低的运算符。
结合性:赋值和自反赋值运算符的结合性是自右向左。
7.条件运算符与条件表达式 条件运算符是C#语言中的唯一的一个三目运算符,它是由“?”和“:”两个符号组成,它的三个对象都是表达式。其一般形式如下:
表达式1?表达式2:表达式3
条件运算符的优先级和结合性如下:
优先级:仅优于赋值运算符。
结合性:自右向左。
例如,有下面的程序段:
x=5;y=8;
m=x >y?x:y;
由于x >y的值为false,故条件表达式的值为y,即8,把8赋给m,m的值为8。
8.其它运算符
9.运算符的优先级
2.1.6常用方法
要调用以上方法,其一般形式如下:
System.Math.方法名([参数])
另外在Math类中还定义了两个重要的常数——Math.PI(圆周率——3.14159265358979323846)和Math.E(自然对数底——2.7182818284590452354)。
2.2典型实例练能力
2.2.1典型实例一:求圆的周长、面积及球的体积
【实例题目】
输入一个数,然后分别求以该数作为半径的圆的周长和面积以及球的体积。
2.3上机练习重应用
2.3.1上机练习一:根据斜边和直角边的长度求对应角的 三角函数值
【练习题目】
输入一个直角三角形的斜边和一个直角边的长度,输出该直角边对应的角的正弦、余弦和正切值。程序的运行界面如图2-4所示,程序的运行界面如图2-5所示。
本章内容电子档及相关图片:
高校.net课件教程,.net基础教程下载(二)[`NQo忲NKm諎Rh'