在上一篇文章中,小编为您详细介绍了关于《电脑咋安装两个音响?电脑主机开机时总是嗡嗡响》相关知识。本篇中小编将再为您讲解标题如果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那个更适合在家游戏和看电视》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器