gpt4 book ai didi

c++ - 是否定义了sprintf(b, “%”)?

转载 作者:行者123 更新时间:2023-12-02 09:48:36 24 4
gpt4 key购买 nike

我遇到了一些执行此操作的代码:

double a(30.0);
char buff[30];
sprintf(buff , "%.4f%", a);
std::cout << std::string(buff) << "!\n";
基本上,我想知道结尾的 %sprintf()是否定义了如果 %后面没有任何内容会发生什么情况?

最佳答案

我相信这会导致不确定的行为。
C11第7.21.6.1条第4款说:

After the %, the following appear in sequence:
[...]
— A conversion specifier character that specifies the type of conversion to be applied.


后来,第9段说:

If a conversion specification is invalid, the behavior is undefined.


在您的示例中,百分号后面没有转换说明符,我认为这表示该说明无效,从而导致未定义的行为。

关于c++ - 是否定义了sprintf(b, “%”)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62532676/

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