【发布时间】:2017-11-05 04:28:04
【问题描述】:
根据here 的回答,我想看看 snprintf 使用了多少字节。以下代码
#include "stdio.h"
int main() {
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:%llx", 0, 0, 0, 0, 0, 0));
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:", 0, 0, 0, 0, 0));
printf("%d\n", snprintf(NULL, 0, "%llx", 0));
return 0;
}
返回
22
10
1
我不明白打印的其他数据末尾的 %llx 如何使用 12 个字节,而如果单独使用它只使用 1 个字节。 snprintf 是否进行任何字节对齐?
【问题讨论】:
-
@Stargateur UB 是美国。
-
@DavidSchwartz 确实,没关系,我总是忘记 C 不会在可变参数函数中推断类型。
-
未定义的行为,schmundefined schmehaviour。