c - 为什么打印的值是25?这不应该是一个内存位置值吗?

标签 c

我正在研究 c 谜题,并遇到了这个问题。 在这里,一个 at printf 语句指针会递增一次,所以我认为它将指向随机数! 但我不明白为什么输出是25? 谁能帮我理解吗? 提前非常感谢;)

void main()

{

      int  const * p=5;

      printf("%d",++(*p));

}

答案:25

最佳答案

指向随机的一段内存(地址 5)。然后,您可以增加存储在那里的任何内容,并打印结果。这是未定义的行为;你的程序可以做任何事情。

更新:实际上,这段代码甚至不应该编译。您已将其声明为指向 const 的指针,因此编译器不应允许您递增。您使用什么编译器?

关于c - 为什么打印的值是25?这不应该是一个内存位置值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409621/

相关文章:

c - 返回一个包含从 a 到 b 的所有整数的数组

c - scanf() 没有为输入的 double 提供正确的值

c - 使用fscanf和fprintf实现复制功能

iphone - iPhone SpeakHere 示例中的录音文件位于哪里?

c - 索引在两个嵌套循环中不起作用

复制整数的低位字节,同时保留字节顺序

c - if 语句中只有变量名意味着什么

c - 指针取消引用的不同行为

在linux中创建模块

c - 目前有哪些方法可以让您在 C 中调用 Go 函数?