gpt4 book ai didi

c++ - Printf 参数顺序被忽略

转载 作者:行者123 更新时间:2023-11-30 21:35:43 25 4
gpt4 key购买 nike

我正确使用这个功能吗?我以前从未见过这种情况发生:

printf("Pulled value %d from index %d\n", prev[block_size-k+i], block_size-k+i);
printf("Pulled value %d from index %d\n", block_size-k+i, prev[block_size-k+i]);

输出

Pulled value 7 from index 0
Pulled value 7 from index 0

您可以看到参数的顺序现在并不重要。我完全迷失了

为了清楚起见,我还将它们分开

printf("Pulled value %d\n", prev[block_size-k+i]);
printf("from index %d\n", block_size-k+i);

输出

Pulled value 0
from index 7

最佳答案

Although the contents of the prev array are doubles, not ints

这是你的问题。参数的类型必须与 printf 期望的类型匹配,并且大多数编译器不会自动检查这一点。 %d 用于 int 类型,使用 %f 用于 float 或插入强制转换为 int。

float 的字节格式不同,在许多系统上是 8 个字节(从技术上讲,float 在传递给 printf 时会自动转换为 double),而 int 是 4 个字节,所以这只是一个巧合两个打印语句看起来相同。

关于c++ - Printf 参数顺序被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822120/

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