Rev*_*1.0 10 c printf format-specifiers
由于大量的搜索结果,我只发现了非常不相关的问题printf().
为什么不uint8_t指定自己的格式字符串,但任何其他类型呢?
据我所知printf(),它必须知道提供的参数的长度,以便能够解析变量参数列表.
由于uint8_t并uint16_t使用相同的格式说明符%u,"如何printf()"知道要处理多少字节?或者uint16_t在供应时是否存在隐含的演员uint8_t?
也许我错过了一些明显的东西.
wic*_*ick 14
因为%u代表"无符号",所以它可能是uint64_t并且取决于体系结构.根据man 3 printf,您可能希望使用长度修饰符来获取所寻求的行为,即%hu(uint16_t)和%hhu(uint8_t).
printf()是一种可变函数.它的可选参数(只有那些)根据默认参数提升(6.5.2.2.p6)得到提升.
由于您要求整数,因此在这种情况下会应用整数提升,并且您提及的类型会被提升int.(而不是unsigned int因为C)
如果你"%u"在printf()中使用,并传递一个uint16_t变量,那么该函数将其转换为a int,然后转换为a unsigned int(因为你用%u要求它)然后打印它.
| 归档时间: |
|
| 查看次数: |
50640 次 |
| 最近记录: |