所以,我意识到%u
用于打印一个unsigned int
。在大多数系统上,unsigned int
通常不止一个字节(我认为通常为32位/4字节)。而unsigned char
始终为一个字节。那么,使用%u
格式说明符将字节打印成数字是否安全?类型提升会启动吗?还是可变参数列表会弄乱事情?以下是一个简单的示例:
#include <stdio.h>
int main()
{
unsigned char val = 'A';
printf("%u", val); // is this safe?
}
假设使用 ASCII 编码,输出应该是
65
。然而,由于%u
技术上是针对unsigned int
而不是unsigned char
,我很好奇是否存在获取垃圾字节或以意外方式访问堆栈的情况。
printf()
是C语言函数;如果调用代码是C ++,应该使用哪个适当的标签? - Jeremy Friesner