一周学会C#(值的类型二)

王朝c#·作者佚名  2006-01-08
宽屏版  字体: |||超大  

一周学会C#(值的类型二)

C#才鸟(QQ:249178521)

4.连接

· 规则1

w 除了赋值操作符外的其他二元操作符都是左连接的。

x+y+z 应理解为 (x+y)+z

· 规则2

w 赋值操作符和?: 操作符是右连接的。

x=y=z 应理解为 x=(y=z)

x+=y+=z 应理解为 x+=(y+=z)

a?b:c?d:e 应理解为 a?b:(c?d:e)

5.计算时的顺序

· 操作数是严格地从左到右被计算的。

int m = 2;

int answer = ++m * ++m + ++m * ++m;

计算的顺序:

3 * ++m + ++m * ++m

3 * 4 + ++m * ++m

12 + ++m * ++m

12 + 5 * ++m

12 + 5 * 6

12 + 30

42

6.整数溢出

· 溢出错误

w un/checked ( 表达式 )

w un/checked{语句 }

int m = ...

Method(checked(m * 2));

m = checked(m * 2);

checked

{

Method(m * 2);

m *= 2;

}

以上的每一句语句都进行溢出错误检查

Method(m * 2);

m *= 2;

以上的每一句语句在用csc /checked+ *.cs编译时,进行溢出错误检查

以上的每一句语句在用csc /checked- *.cs编译时,不进行溢出错误检查

Method(unchecked(m * 2));

m = unchecked(m * 2);

unchecked

{

Method(m * 2);

m *= 2;

}

以上的每一句语句都不进行溢出错误检查

checked(表达式)检查一个表达式的结果是否溢出。它可以用于任何一个表达式,但只只能对整数操作符起作用,因为只有这些操作符才产生溢出。这些操作符是:++, --, -(负号),+ -(减号), * ,/ ,%以及整型之间的显式类型转换符。checked(表达式)的结果也是一个表达式,它可以被用来作为另一个表达式的一部分:

int outcome = checked( ... );

checked{语句}检查一系列的语句结果是否溢出。它不是一个表达式,没有结果。例如,下面有语句会产生错误:

int noOutcome = checked { ... };

(注意:checked(表达式)的括号是园括号,而checked{语句}的括号是花括号)。

unchecked是不检查是否溢出。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有