c - 以下 C 程序的输出是什么

标签 c pointers printf

#include<stdio.h>

int main()

{
  char *p;
  p="%d\n";
  p++;
  p++;
  printf(p-2, 400);
  return 0;
}

当我运行上面的代码时,我得到输出 400。但是为什么是 400?

最佳答案

首先为p分配格式化字符串。然后减1两次。最后它的值减二被传递给带有附加参数400的printf。

p 的最新值中减去 2 将其恢复为原始格式字符串。因此 printf 打印值 400。

关于c - 以下 C 程序的输出是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42183767/

相关文章:

检查连接打开或关闭?(在 Linux 中的 C 中)

c++ - C 结构中的总线错误

c - 为什么我在 C 中的多维动态分配不起作用?

c - 如何通过 Bachelor 结构和 Info 结构访问 Info1?

c# - 不安全 C# 的变态,内存堆栈分配

c - 如何打印 (void *) 字符串中的单词

c - Makefile 找不到已经存在的目标

python - 我应该将 C 库与我的 Python 应用程序捆绑在一起吗?

c - 如何在C中将int转换为char*(不使用sprintf)

c++ - 如何从 C/C++ 中的以下函数获取所有参数?