为什么uint8_t和uint16_t的格式说明符相同(%u)?
发布时间:2020-12-14 04:11:10 所属栏目:Windows 来源:网络整理
导读:参见英文答案 What default promotions of types are there in the variadic arguments list?1个 由于搜索printf()的结果很多,我只发现了相关的问题. 为什么uint8_t没有指定自己的格式字符串,但是其他类型呢? 据我所知,printf(),它必须知道提供的参数的长度
参见英文答案 >
What default promotions of types are there in the variadic arguments list?1个
由于搜索printf()的结果很多,我只发现了相关的问题. 为什么uint8_t没有指定自己的格式字符串,但是其他类型呢? 据我所知,printf(),它必须知道提供的参数的长度,以便能够解析变量参数列表. 由于uint8_t和uint16_t使用相同的格式说明符%u,printf()如何“知道”要处理多少字节?或者在提供uint8_t时是否以某种方式对uint16_t进行了隐式转换? 也许我错过了一些明显的东西.
printf()是一个可变函数.它的可选参数(只有那些)根据默认参数提升(6.5.2.2.p6)得到提升.
由于要求整数,因此在这种情况下应用整数提升,并且您提到的类型将被提升为int. (而不是unsigned int因为C) 如果在printf()中使用“%u”,并将其传递给uint16_t变量,则该函数将其转换为int,然后转换为unsigned int(因为您使用%u请求它)然后将其打印出来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Windows批处理文件中嵌入VBScript
- 应用程序无法正常启动0xc000007b解决方法
- win10上部署Hadoop-2.7.3——非Cygwin、非虚拟机
- active-directory – GPO为每台计算机设置壁纸而不是每个用
- windows – 在R中的doMC和foreach循环不起作用
- 如何从Win8 Javascript metro应用程序引用C#类库?
- 主流服务器虚拟化技术简单使用——Hyper-V(二)
- powershell – 在注册表子项中查找值并删除它们
- windows-server-2008-r2 – Windows 2008 R2 gpupdate锁定我
- 使用Windows服务通过WCF处理MSMQ消息