2-10 C#的类型转换
本节编程练习不计算学习进度,请电脑登录imooc.com操作

C#的类型转换

上一节我们学习了4种数据类型,也提到每种类型的变量只能存这种类型的数据。可是,有时候真的需要把不同类型的值放在一起运算,比如这种:3.5+8 这时候怎么办呢?有下面2种情况:

自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。
以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。

请看这个例子:double d=2; 2的精度显然低于变量d的精度,所以2会自动转换为2.0然后赋值给d。
再看这个例子:int i=3.0;变量i的精度低于3.0,但是由于i已经声明为int型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。

强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:

int i=(int)3.0;

数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。
需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。

任务

这段程序计算变量d和x的和,并打印。但是d和x的类型不同,计算会出错吗?

请把第 12 行的代码改为 int x = (int)d + 1;这样就对变量d进行了强制类型转换。

那么,程序运行的结果会是多少呢?

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Test
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. double d = 2.5;
  12. int x = d + 1;
  13. Console.WriteLine(x);
  14. }
  15. }
  16. }
下一节