为了账号安全,请及时绑定邮箱和手机立即绑定

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

内容如题目所示

正在回答

2 回答

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

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

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

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


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

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

0 回复 有任何疑惑可以回复我~

不贴全代码 - - 

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信