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

一周学会 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 是不检查是否溢出。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus