gpt4 book ai didi

c - Printf 在下面的代码中抛出警告而不是错误

转载 作者:行者123 更新时间:2023-11-30 19:57:15 25 4
gpt4 key购买 nike

为什么编译器对于这个不正确的程序只产生警告而不是错误?

int main(){
int a=3,b=4;
printf("%d,%d");
return 0;
}

最佳答案

您的程序有未定义的行为。由于 printf 是一个可变参数函数,因此这里不存在约束冲突,因此编译器甚至不需要生成警告,更不用说错误了。它不会产生错误,除非它可以证明在程序的任何执行期间都达到了调用未定义行为的语句;在你的情况下这是正确的,但它只在最小的玩具示例中是正确的,不值得尝试特殊情况。

请注意,对于非可变参数函数,使用错误数量的参数进行调用是一种约束违规,这意味着编译器需要发出警告(“产生诊断”),并且可以说应该产生错误并拒绝编译程序。

关于c - Printf 在下面的代码中抛出警告而不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49453126/

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