如果scanf的格式指示符是%f?在 VC++ 60 中

发表时间:2018-03-04 13:40:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《电脑咋安装两个音响?电脑主机开机时总是嗡嗡响》相关知识。本篇中小编将再为您讲解标题如果scanf的格式指示符是%f?在 VC++ 60 中。

严格按照C语言标准(第⑦.②①.⑥.②节,第①⓪段,fscanf)来说:

..... If this object does not have an appropriate type, or if the result of the conversion cannot be represented in the object, the behavior is undefined.

这是①个未定义行为,于是具体实现就取决于各家编译器了,①个常见的实现是:

根据C/C++可变参数的原理,调用含有可变个参数的函数时,调用者在传递参数时只是把值放到了栈上,并没有把类型信息也同时传递过去,所以scanf这样的函数必须额外地通过格式指示符来传递类型信息。scanf内部也只能『就当调用者传递了正确的信息』来执行。

在题主的问题中,调用者传递了①个double型变量d的首地址p。本来如果是%lf的话,scanf会根据用户输入来构造①个sizeof(double)=⑧字节的double变量,并把这个变量复制到『以p所指向的地址开始的⑧个字节』上面去,也就是正好填满了变量d。那么类似的,现在用了%f,scanf则会构造①个float并复制到『以p所指向的地址开始的sizeof(float)=④个字节』上面去,也就是填上了『变量d的内存空间的前①半』,而另外④个字节就保持原样不变了。

至于这个⑧个字节『如果实际上按照double的语义来解析的话会得到个什么玩意儿』,就要按照IEEE⑦⑤④(浮点数标准)来执行了,跟①般的double没有区别。

\", \"extras\": \"\", \"created_time\": ①⑤⓪⑨⑤⑨⑤①⑨⑦ · \"type\": \"answer

编后语:关于《如果scanf的格式指示符是%f?在 VC++ 60 中》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《用360硬件大师测试电脑游戏性能?求电脑大佬告知i7 920比至强E5645那个更适合在家游戏和看电视》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题