Jab*_*cky 20 c printf language-lawyer
我想知道这是否会产生未定义的行为:
printf("Test %d %s", 123, "abc", "def", "ghi");
Run Code Online (Sandbox Code Playgroud)
格式字符串后面的前两个参数匹配格式字符串,所以这些都可以; 但第3和第4个参数过多,因为没有更多相应的格式说明符.
恕我直言printf()应该忽略这些多余的论点,而且应该没有UB.它是否正确?
Sou*_*osh 32
是的,此方案由标准明确定义.它不是未定义的行为.
引用C11标准,章节§7.21.6.1,该fprintf()函数
[...]如果参数保留时格式已用尽,则会评估多余的参数(一如既往),否则将被忽略 [...]
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |