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

客服QQ:3315713922

C语言的强制转换你会用吗?

作者:课课家教育     来源: http://www.kokojia.com点击数:1111发布时间: 2016-08-12 09:00:18

标签: C语言强制转换算术转换

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

  C语从开发到现在一直都出现在人们的视野中,因为C语言不仅是许多编译语言开发的基础,它还是许多初学者第一个接触编程所用的语言。就连java之父也曾经说过C语言有太多令人觉得美妙的地方。可见C语言对于编程的重要性。下面我们来了解一下C语言的基础知识——强制转换。

     强制转换类型

     C语言的强制类型转换就是将一个类型的变量转换为另一种数据类型。强制转换的一般形式如下:

  (类型说明符) (表达式)

  打个比方:(double) a; 就是将a 转换为双精度类型。(int)(x+y)的作用就是将x+y 的结果转换为整型。但是在使用强制转换的时候要注意几个问题:

  1)类型说明符以及表达式都要用括号括起来,如果是单个变量就可以不用括号。在上文的例子(int)(x+y) 中如果写成(int)x+y 的结果就是把x进行转换了以后再和y相加。

  2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

  下面我们看一个例子:

C语言的强制转换你会用吗?_C语言_强制转换_算术转换_课课家

      结果

强制转换例子结果

  从例子我么可以看到int 类型进行转换之后就变成了浮点类型。

  我们再看一个实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

强制类型转换运算符把一个整数变量除以另一个整数变量

      结果:

强制转换例子结果

  在上面的例子我们要注意的是,因为这里的变量不是单独的,所以应该加括号的。而这里没有加,就变成了sum的值首先被转换为double 型,然后再除以sum1 。

  在强制转换类型中我们还可以这样子使用:int 'A';这样子进行转换的结果是A的ascll值。

      类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。

  整数提升

  整数提升可以用于所有的操作数,下面说一说整数提升的规则:

   1)在一个表达式中凡是可以使用整型的地方都可以使用char、short int或者整型位域的变量。

   2)如果1)中的变量的原始类型的所有值都可以被int表示(没有造成值的丢失,就比如这种unsigned short提升为int的情况),那么原值被转换为int; 否则的话,转为unsigned int型。

     下面看一个例子:

整数提升代码例子

      结果:

整数提升例子结果

  在这里,sum 的值为 98,因为编译器进行了整数提升,在执行实际加法运算时,把 'a' 的值转换为对应的 ascii 值。

  常用的算术转换

  在进行算术运算的时候,不同类型的数必须转换为统一类型的数据才能运算。常用的算术转换是隐式地把值强制转换为相同的类型。而编译器首先会进行整数提升,如果操作数类型不同,就会以表达式中最长类型为主,将其他类型均转换成该类型。

  比如:若运算数中有double型或float型,则其他类型数据均转换成double类型进行运算。若运算数中最长的类型为long型.则其他类型数均转换成long型数。

  类型层次图:

  下面我们看一个例子:

算术转换代码实例

      结果:

算术转换例子结果

  在例子中c 先会被转换为整数,但是由于sum 是float 型,所以在这里就会用到算术转换,编译器将i 和c 转换为浮点数,并将他们相加。

     小结一下,强制转换还是很好用的功能,强制转换之后并不会改变原来变量的类型,这个是要注意的。而算术转换也是编程的时候常用的一种方法,它可以方便的转换类型而不用自己对它进行转换。最后,希望本文能有所帮助,如果对C语言有兴趣的朋友可以在本网站中进行视频学习或者直接点击文中链接。

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