下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简单分析数据类型转换

作者:课课家教育     来源: http://www.kokojia.com点击数:606发布时间: 2019-03-04 10:14:56

标签: 编程语言C语言数据类型转换

大神带你学编程,欢迎选课

  或许刚初学C语言的同学对数据类型转换的概念不太熟悉,作为C语言中的重要学习部分,我们不能不懂就就把它略过了,不然对以后的实操有很大的影响。下面课课家笔者就为大家详细介绍什么是C语言中的数据类型转换。

  数据类型转换

  所谓数据类型转换,简而言之就是将数据(变量、表达式的结果)从一种类型转换到另一种类型。比如为了保存小数我们可以将int类型的变量转换为double类型。

  下面笔者列举数据类型转换的一般格式:

  (type_name) expression

  type_name为要转换到的数据类型,expression为表达式。比如:

  (float) a; //把a转换为实型

  (int)(x+y); //把x+y的结果转换为整型

  (float) 100; //将一个常量转换为实型

  【示例】将整数转换为浮点数:

  #include <stdio.h>

  int main(){

  intsum = 17, count = 5;

  double mean;

  mean = (double) sum / count;

  printf("Valueofmean:%f\\n",mean);

  return 0;

  }

  输出结果:

  Value of mean:3.400000

  这里需要我们注意的地方是,类型转换运算符()的优先级高于/(double) sum / count会先将sum转换为double类型,然后再进行除法运算。如果写作(double)(sum / count),那么运行结果就是3.000000

  这种由程序员显式进行的转换称为强制类型转换。除了强制类型转换,在不同数据类型的混合运算中编译器也会隐式地进行数据类型转换,称为自动类型转换。

  自动类型转换遵循下面的规则:

  ①若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。

  ②转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。

  ③所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

  ④char型和short型参与运算时,必须先转换成int型。

  在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。

  【示例】自动数据类型转换。

  #include <stdio.h>

  int main(){

  float PI = 3.14159;

  int s1, r = 5;

  double s2;

  s1 = r*r*PI;

  s2 = r*r*PI;

  printf("s1=%d,s2=%f\\n",s1,s2);

  return 0;

  }

  运行结果:

  s1=78,s2=78.539753

  如上面所示,在计算表达式r*r*PI时,r和PI都转换成double类型,表达式的结果也为double类型。但由于s1为整型,所以赋值运算的结果仍为整型,舍去了小数部分。此时我们需要注意的地方是将小数部分直接丢掉,而不是按照四舍五入向前舍入。无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。具体大家可以看下面的例子:

  #include <stdio.h>

  int main(){

  float f = 5.75;

  printf("(int)f=%d,f=%f\\n",(int)f,f);

  return 0;

  }

  运行结果:

  (int) f = 5,f =5.750000

  本次简单分析数据类型转换的教程到此就暂告一段落,如果以后有补充的话笔者会在此继续补充,希望这个教程对大家学习C语言能起到一定的帮助!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程