C强制类型转换与隐式转换

Posted tgww88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C强制类型转换与隐式转换相关的知识,希望对你有一定的参考价值。

一、隐式类型转换 

      如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示:

 

       图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。所有这些转换都是由系统自动进行的, 使用时你只需从中了解结果的类型即可。这些转换可以说是自动的,但然,C语言也提供了以显式的形式强制转换类型的机制。
记忆小窍门:

                              短字节向长字节看齐,                               有符号向无符号看齐,                               整数向浮点型看齐,                               单精度向双精度看齐,

二、强制类型转换

        把高位类型赋值给低位类型,就必须进行强制类型转换,否则编译会出错。

        当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。

 

以上是关于C强制类型转换与隐式转换的主要内容,如果未能解决你的问题,请参考以下文章

04_类型转换

scala学习笔记-隐式转换与隐式参数(18)

显式转换与隐式转换

这种 Nullable<T> 行为与隐式转换运算符的理由是啥

为啥 Linq Cast<> 助手不能与隐式转换运算符一起使用?

类型转换