%lf改成%d的时候数值会变,变成4195870,不知道此时的对应规则是怎样的

来源:2-8 自动类型转换

所谓无谓

2015-02-07 17:11

内容如题目所示

写回答 关注

2回答

  • onemoo
    2015-02-08 23:13:43

    没有转换规则。这里并不是类型转换!

    printf中%lf(实际上应该写成%f)会希望相应的参数类型为double,printf函数会把那个参数当作double来取值和打印,其实它并不知道这个参数到底是不是double类型的。

    同样,见到%d时printf会希望那个参数是int型。

    所以当你传入给printf一个double类型的参数,却用了%d时,printf会把那个参数当作int型来读取的,而通常int和double在计算机中的存储方式是不一样的,于是会得到错误的值。


    在 a = b;这类赋值语句中,发生的才是类型转换。说明下:并不是只有这种情况下才有类型转换,类型转换会在很多种情况下显式或隐式地发生,很复杂。

    如上所说的:printf中的传入参数是不会根据格式字符来进行类型转换的,程序员必须保证传入了正确的类型。

  • default_null
    2015-02-07 17:42:01

    不贴全代码 - - 

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926288 学习 · 20799 问题

查看课程

相似问题