C语言%d对应整形,%hd和%ld对应短整形和长整形,%lld代表long long int,%o代表八进制输出,%u是%d的无符号版本,格式串解析是在libc完成。
- 不能有独立的%h或%l格式串,会和上面的组合格式产生冲突。
- VS2019编译C代码只有%h格式符: 编译警告:
格式字符串“%h”未终止
- VS2019编译C代码只有%h格式符: 编译警告:
- %d/%o/%u/%x和%h或%l可以组合,比如%ho, %hu, %lo, %lx, %ld等。
- 不能用大写模式,比如%L或者%LL, libc不识别
%h数值可能不是预期
在C语言中,假设short是2字节,%hd只会获取2个字节数据。如下第二句输出结果会变成-32768.
- printf("%hd\n", 200);
- printf("%hd\n", 32768);
无符号版本
- 注意,%o和%x输出格式是无符号版本。