gpt4 book ai didi

c - "invalid conversion specification"到底是什么?

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

根据 C11,章节 §7.21.6.1,P9

If a conversion specification is invalid, the behavior is undefined.282) If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.

直到时间,我的理解是,为了

  char str [] = "Sourav";
  • printf("%S", str);这样的语句属于第一句,不存在%S(大写)
  • 类似printf("%d", str);的语句属于第二句(CS和参数类型不匹配,但是%d不是一个“无效的”CS,无论如何)

until advised otherwise通过最近的评论线程。

我的理解有误吗?第二个语句可以归类为“无效”(PS-不是“错误”)转换说明符吗?


更新:答案和评论主题已删除,here's a snap <10K 用户。

最佳答案

转换规范的“有效性”由您引用的上面的标准段落决定:

7.21.6.1 - p4 to p8

Each conversion specification is introduced by the character %. After the %, the following appear in sequence: ...

The flag characters and their meanings are: ...

The conversion specifiers and their meanings are: ...

这意味着任何由上述列表中的元素组成的转换规范都是有效的,所有其他的都不在标准的范围内。这就是为什么你的代码中的段落提到了 UB 的两个原因。一是规范不符合语法,二是规范与类型不匹配。

您链接到的评论似乎通俗地使用“无效”。 IE。转换规范的两种使用都是“无效的”,因为它们会导致 UB。但从语言律师的角度来看,只有第一个是“无效的”。

关于c - "invalid conversion specification"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45588405/

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