%lf改成%d的时候数值会变,变成4195870,不知道此时的对应规则是怎样的
内容如题目所示
内容如题目所示
2015-02-07
没有转换规则。这里并不是类型转换!
printf中%lf(实际上应该写成%f)会希望相应的参数类型为double,printf函数会把那个参数当作double来取值和打印,其实它并不知道这个参数到底是不是double类型的。
同样,见到%d时printf会希望那个参数是int型。
所以当你传入给printf一个double类型的参数,却用了%d时,printf会把那个参数当作int型来读取的,而通常int和double在计算机中的存储方式是不一样的,于是会得到错误的值。
在 a = b;这类赋值语句中,发生的才是类型转换。说明下:并不是只有这种情况下才有类型转换,类型转换会在很多种情况下显式或隐式地发生,很复杂。
如上所说的:printf中的传入参数是不会根据格式字符来进行类型转换的,程序员必须保证传入了正确的类型。
举报