前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言 | 每日基础(85)

C语言 | 每日基础(85)

作者头像
小林C语言
发布2020-10-30 11:15:16
2390
发布2020-10-30 11:15:16
举报

读者:为什么调用 printf() 前, 必须要用 #include <stdio.h>?

阿一:为了把 printf() 的正确原型说明引入作用域。对于用可变参数的函数, 编译器可能用不同的调用次序。例如, 如果可变参数 的调用比固定参数的调用效率低。所以在调用可变参数的函数前, 它的原型说明 必须在作用域内, 编译器由此知道要用不定长调用机制。在原型说明中用省略号 “...” 来表示可变参数。

读者:为什么 %f 可以在 printf() 参数中, 同时表示 float 和 double?

阿一:参数默认晋级” 规则适用于在可变参数中的可变动部分: char 和 short int 晋级到 int, float 晋级到 double。同样的晋级也适用于在作用域中没有原型说明的函数调用, 即所谓的 “旧风格” 函数调用。所以 printf 的%f 格式总是得到 double。类似的, %c 总是得到 int, %hd 也是。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档