gpt4 book ai didi

c - 为什么c中出现 '%' conversions than data arguments错误时输出随机整数?

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:33 25 4
gpt4 key购买 nike

我从 printf() 调用中取出 age 变量只是为了看看会发生什么。然后我用 make 编译它。似乎它只抛出关于转换百分比多于数据参数和未使用的年龄变量的警告,但没有编译错误。然后我运行可执行文件,它确实运行了。只是每次我运行它时,它都会返回不同的随机整数。我想知道是什么导致了这种行为?

#include <stdio.h>

int main(int argc, char *arg[]) {
int age = 10;
int height = 72;

printf("I'm %d years old\n");
printf("I'm %d inches tall\n", height);

return 0;
}

最佳答案

根据 printf() 规范,如果所需格式说明符的参数数量不足,它会调用 undefined behavior .

那么,你的代码

printf("I'm %d years old\n");

缺少 %d 所需的参数,调用 UB 并且不保证产生任何有效结果。

交叉引用,C11 标准,章节 §7.21.6.1

[..] If there are insufficient arguments for the format, the behavior is undefined. [..]

关于c - 为什么c中出现 '%' conversions than data arguments错误时输出随机整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951796/

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