用户名: 密码: 验证码: gdcode 注册

C#教程第二课:表达式,类型和变量

时间:2007-06-15 来源: 作者: 【字体: 减小 增大点击: 收藏 | 投稿
  

逻辑与 & 左 逻辑异或 ^ 左 逻辑或 | 左 条件与 && 左 条件或 || 左 条件 ?: 右 赋值等 =*=/=%==-=<<=>>=&=^=|= 右
左结合意味着运算符是从左到右进行运算的。右结合意味着所有的运算是从右到左进行的,如赋值运算符,要等到其右边的计算出来之后,才把结果放到左边的变量中。 财,软联盟,fs119.net

2.清单1-2.单目运算符:Unary.cs
usingSystem;
classUnary{
publicstaticvoidMain(){
intunary=0;
intpreIncrement;
intpreDecrement;
intpostIncrement;
intpostDecrement;
intpositive;
intnegative;
sbytebitNot;
boollogNot;
preIncrement=unary;
Console.WriteLine("Pre-Increment:{0}",preIncrement);
preDecrement=--unary;
Console.WriteLine("Pre-Decrement:{0}",preDecrement);
postDecrement=unary--;
Console.WriteLine("Post-Decrement:{0}",postDecrement);
postIncrement=unary;
Console.WriteLine("Post-Increment:{0}",postIncrement);
Console.WriteLine("FinalValueofUnary:{0}",unary);
positive=-postIncrement;
Console.WriteLine("Positive:{0}",positive);
negative=postIncrement;

财管家,园,fs119.net

Console.WriteLine("Negative:{0}",negative);
bitNot=0;
bitNot=(sbyte)(~bitNot);
Console.WriteLine("BitwiseNot:{0}",bitNot);
logNot=false;
logNot=!logNot;
Console.WriteLine("LogicalNot:{0}",logNot);
}
}
说明


1.当计算表达式的时候,在后置增一和后置减一运算符进行运算时,先返回其值,再进行增一或者减一运算。当使用前置加号和减号运算符进行运算时,是先进行增一或者减一的运算,然后再返回其结果值。

2.在清单1-2中,变量unary初始化为0,进行x运算时,"unary"的值加1,再把其值1赋给"preIncrement"变量。在进行--x运算时,先把"unary"的值减到0,再把值0赋给"preDecrement"变量。

3.进行x-运算时,先把"unary"的值0赋给"postDecrement"变量,之后再把"unary"减到-1。进行x运算时,先把"unary"的值-1赋给"postIncrement"变量,之后再对"unary"加1,使得"unary"变量现在的值为0。 财软.联盟.fs119.net

4.变量"bitNot"初始值为0,进行按位取反运算,本例中,数0表示为二进制"00000000",按位取反之后变为-1,其二进制表示为"11111111"。

5.了解一下表达式"(sbyte)(~bitNot)",任何对类型sbyte,byte,short或者ushort类型数据的运算,返回结果都是整数。要把值赋给bitNot变量,我们必须使用cast(类型)运算符(强制类型转换),其中Type表示你希望转换成的类型(本例中为sbyte)。Cast运算符把大范围类型的数据转换为小范围类型的数据时,须特别谨慎,因为此时有丢失数据的危险。一般来说,把小类型的数据赋给大类型变量,并没有问题,因为大范围数据类型的变量具有足够的空间存放小类型数据。注意在signed和unsigned类型之间进行Cast运算时,也存在此类危险。许多初级程序设计教程对变量的位表示作出了很好的讲解,同时也介绍了直接进行Cast运算的危险。 财.软联盟.fs119.net

财管 家园 fs119.net

财,软联盟,fs119.net


财软 联盟 fs119.net

财管,家园,fs119.net



逻辑非(!)运算符可以处理布尔变量值。本例中,"logNot"变量从false变为true。

上述程序的输出结果如下:

财 管家园 fs119.net

>Pre-Increment:1
>Pre-Decrement0
>Post-Decrement:0
>Post-Increment-1
>FinalValueofUnary:0
>Positive:1
>Netative:-1
>BitwiseNot:-1
>LogicalNot:True
3.清单1-3.二元运算符Binary.cs
usingSystem;
classBinary{
publicstaticvoidMain(){
intx,y,result;
floatfloatResult;
x=7;
y=5;
result=xy;
Console.WriteLine("xy:{0}",result);
result=x-y;
Console.WriteLine("x-y:{0}",result);
result=x*y;
Console.WriteLine("x*y:{0}",result);
result=x/y;
Console.WriteLine("x/y:{0}",result);
floatResult=(float)x/(float)y; 财管,家园,fs119.net
Console.WriteLine("x/y:{0}",floatResult);
result=x%y;
Console.WriteLine("x%y:{0}",result);
result=x;
Console.WriteLine("result=x:{0}",result);
}
}
说明


清单1-3演示了二元操作符的几个例子。加法(),减法(-),乘法(*)和除法(/)的运算结果,就是我们通常进行的的四则运算的结果。

因为"floatResult"变量是浮点运算类型,所以整型变量"x"和"y"被强制转换成浮点类型来计算FloatResult。

这里有个求余数的运算符,两个操作数相除,返回余数。

最后一条语句给出了另外一种赋值形式,这里用了(=)运算符.无论什么时候你使用(=)运算符,那么这个二进制运算符就应该在运算符左右两边都进行运算,然后把值赋给左边的参数。本语句相当于"result=resultx",并返回同样的值。

财软联,盟,fs119.net



前面的课程中,你看到的使用次数较多的一种类型是"string"(字符串)类型。"string"类型是由包含在引号内的Unicode编码的字符构成。例如"Thisisastring."

另外一种数据类型是数组。数组可以看成是同种类型的元素构成的集合。当声明数组时,你要指定类型名,数组名,维数和数组大小。 财软联盟,fs119.net

财管.家园.fs119.net

财管.家园.fs119.net


财管家园.fs119.net

财 软联盟 fs119.net



财管家园,fs119.net

4.清单1-4.ArrayOperations:Array.cs
usingSystem;
classArray{
publicstaticvoidMain(){
int[]myInts={5,10,15};
bool[][]myBools=newbool[2][];
myBools[0]=newbool[2];
myBools[1]=newbool[1];
double[,]myDoubles=newdouble[2,2];
string[]myStrings=newstring[3];
Console.WriteLine("myInts[0]:{0},myInts[1]:{1},myInts[2]:{2}",myInts[0],myInts[1],myInts[2]);
myBools[0][0]=true;
myBools[0][1]=false;
myBools[1][0]=true;

Console.WriteLine("myBools[0][0]:{0},myBools[1][0]:{1}",myBools[0][0],myBools[1][0]);
myDoubles[0,0]=3.147;
myDoubles[0,1]=7.157;
myDoubles[1,1]=2.117;
myDoubles[1,0]=56.00138917;
Console.WriteLine("myDoubles[0,0]:{0},myDoubles[1,0]:{1}",myDoubles[0,0],myDoubles[1,0]);
财 管家园 fs119.net

myStrings[0]="Joe";
myStrings[1]="Matt";
myStrings[2]="Robert";
Console.WriteLine("myStrings[0]:{0},myStrings[1]:{1},myStrings[2]:{2}",myStrings[0],myStrings[1],myStrings[2]);
}
}
说明
清单1-4演示了数组的各种不同实现方法。第一个例子是"myInts"数组,它在声明的同时进行了初始化。

接着是个二维数组,可以把它理解为数组的数组。我们需要使用"new"运算符来实例化初始数组的大小,之后,再对每个子数组使用new运算符。

第三个例子是个二维数组。数组可以是多维的,每一维可以通过逗号隔开,也必须用"new"运算符进行实例化。

最后定义了一个一维的字符串数组。

每种情况下,对于数据元素的访问可以通过引用元素的位置(下标)来进行。数组的大小可以是任何整型值。其下标从0开始。 财管家 园 fs119.net

小结
到现在为止,你已经了解了C#的变量,简单数据类型,数组和字符串。我们还学习了如何用C#的运算符构成表达式。

财管家园,fs119.net

财软联.盟.fs119.net

财管家.园.fs119.net


文章摘自网络,如有侵权,请与我们联系.
数据统计中!!
上一篇:C#教程第三课:选择控制语句
下一篇:C#教程第一课:简单的欢迎程序

精品课程推荐



用户名: 密码: 匿名? 注册