C#入门到精通系列课程——第3章变量及运算符 (13)

 按照代码的本意,i的值应该是3000000000,但在运行这两行代码时,却发现i的值是-1294967296,这主要是由于int类型的最大值为2147483647,很明显,3000000000要比2147483647大,所以在使用上面代码进行显式类型转换时,出现了与预期不符的结果,但是程序并没有报告错误。如果在实际开发中遇到这种情况,可能会引起大的BUG,那么,在遇到这种错误时,有没有一种方式能够向开发人员报告错误呢?答案是肯定的。C#中提供了Convert类,该类也可以进行显式类型转换,它的主要作用是将一个基本数据类型转换为另一个基本数据类型。Convert类的常用方法及说明如表3.10所示。

C#入门到精通系列课程——第3章变量及运算符

 

 例如,定义一个double类型的变量x,并赋值为198.99,使用Convert类将其显式转换为int类型,代码如下:

C#入门到精通系列课程——第3章变量及运算符

 

 下面使用Convert类的ToInt32对本节开始的两行代码进行修改,修改后的代码如下:

C#入门到精通系列课程——第3章变量及运算符

 

 再次运行这两行代码,则会出现如图3.38所示的错误提示。

C#入门到精通系列课程——第3章变量及运算符

 

 

这样,开发人员即可根据图3.38中的错误提示对程序代码进行修改,避免程序出现逻辑错误。

3.7  运算符优先级与结合性

C#中的表达式是使用运算符连接起来的符合C#规范的式子,运算符的优先级决定了表达式中运算执行的先后顺序。运算符优先级其实相当于进销存的业务流程,如进货、入库、销售、出库,只能按这个步骤进行操作。运算符的优先级也是这样的,它是按照一定的先后顺序进行计算的,C#中的运算符优先级由高到低的顺序依次是:

(1)自增、自减运算符。

(2)算术运算符。

(3)移位运算符。

(4)关系运算符。

(5)逻辑运算符。

(6)条件运算符。

(7)赋值运算符。

如果两个运算符具有相同的优先级,则会根据其结合性确定是从左至右运算,还是从右至左运算。表3.11列出了运算符从高到低的优先级顺序及结合性。

C#入门到精通系列课程——第3章变量及运算符

 

 说明:表3.11中的“←”表示从右至左,“→”表示从左至右。从表3.11中可以看出,C#中的运算符中,只有单目、条件和赋值运算符的结合性为从右至左,其他运算符的结合性都是从左至右,所以,下面的代码是等效的:

C#入门到精通系列课程——第3章变量及运算符

 

 

3.8  难点解答 3.8.1  使用赋值运算符时的注意事项

使用赋值运算符时,其左操作数不能是常量,但所有表达式都可以作为赋值运算符的右操作数,例如,下面的3种赋值形式是错误的:

C#入门到精通系列课程——第3章变量及运算符

 

 另外,在使用赋值运算符时,右操作数的类型必须可以隐式转换为左操作数的类型,否则,将会出现错误提示,例如,下面的代码:

C#入门到精通系列课程——第3章变量及运算符

 

 运行上面的代码,将会出现如图3.39所示的错误提示。

C#入门到精通系列课程——第3章变量及运算符

 

 

3.8.2  条件运算符不能单独作为语句

在C#中使用条件运算符对两个整型变量a和b进行运算,如果a>b,则得到a的值,否则,得到b的值,代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxyxx.html