C语言第7课:数据类型转换的知识点,以及出一道容易出错的题( 三 )

这如果再细化来讲 , 属于“隐式转换”中的“赋值转换” 。 我们再来看一下 , 隐式转换中的“算术转换”:

隐式转换中的算术转换

上述程序 , 第5行定义了一个整型变量i , 第6行定义了一个双精度浮点数变量d , 这两个变量做运算之后 , 比如在第8行的第二个参数位置 , 相加之时(i+d) , 会先将变量i的返回值 , 也就是“int”类型转换为“double”类型 。 当然 , 最终的计算结果肯定也是“double”类型了 。

如果第8行第一个参数中 , 使用%d的话 , 是打印不出预期的效果的 。 只能使用“%lf”来打印“double”类型数据 。

关于“隐式转换” , 还有一个容易出错的考试题 , 我们来看下面这一道题:

容易出错的一道题

上述程序中 , 第5行定义了一个变量i , 初始化值为-3 , 属于“负数”;第6行定义了一个无符号整型变量d , 初始化值为1 , -3的绝对值是大于1的 , 此处容易出错的点就是:如果按照“常理”来推断 , -3+1值是-2 , 是小于0的 , 但是此处因为涉及到了“隐式转换” , 变量i的返回结果 , 暂时转换成了“unsigned int”类型 , 也就是“无符号数” , 所以i+d的值是大于0的 。

推荐阅读