gpt4 book ai didi

c++ - 命令 printf 的一个奇怪问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:41 26 4
gpt4 key购买 nike

我正在使用简单标量工具集对缓存关联性进行一些模拟。我看到 printf 函数有一些最奇怪的行为。这是代码片段:

printf(" Name: %s %d %d %d \n", name, nsets, cp->set_shift, cp->set_mask);
printf(" Name: %s %d %d %d \n", name, cp->set_mask, nsets, cp->set_shift);

printf 行是一行一行的,中间没有其他代码。这是输出:

 Name: dl1 128 5 127
Name: dl1 127 0 128

第二个 printf 的输出是错误的。第二个 printf 的输出应该是:

Name: dl1 127 128 5

改变 printf 语句的相对顺序不会改变输出。我想了解 printf 的哪一部分??

关于新手

最佳答案

去看看变量声明。我猜有人是 shortlong,而不是 int。由于 printf 无法检查您传递的内容是否有效,因此它会根据 % 符号决定从堆栈中获取多少字节。如果您的参数不符合格式,不是编译错误,而是会产生垃圾。

关于c++ - 命令 printf 的一个奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775383/

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