gpt4 book ai didi

c - 使用过多的参数调用 printf 是未定义的行为吗?

转载 作者:太空狗 更新时间:2023-10-29 16:27:38 24 4
gpt4 key购买 nike

我想知道这是否会产生未定义的行为:

printf("Test %d %s", 123, "abc", "def", "ghi");

格式字符串后的前两个参数与格式字符串匹配,所以这些都是可以的;但是第三个和第四个参数是多余的,因为没有更多对应的格式说明符。

恕我直言 printf() 应该简单地忽略这些多余的参数并且不应该有 UB。这是正确的吗?

最佳答案

是的,这个场景是由标准明确定义的。它不是未定义的行为。

引用 C11 标准,章节 §7.21.6.1,fprintf() 函数

[...] If the format is exhausted while arguments remain, the excess arguments are evaluated (as always) but are otherwise ignored [...]

关于c - 使用过多的参数调用 printf 是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com