#include <stdio.h>
int main()
{
int *p = (int*) 60; --- Line 1
int *q = (int*) 40; --- Line 2
printf("%d", p-q); //Output is 5
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下这个程序的输出吗?
这意味着为指针分配整数值的(实现定义的)操作发生.这通常意味着p
指向内存地址60
和q
地址40
.这些存储器地址可以在虚拟存储器,硬件存储器中,并且许多实现具有用于这些的不同转换例程.
由于这是实现定义的任何事情都可能发生,正如您的实现所描述的那样.
这肯定不是,它使用了大量的嵌入式硬件编程访问某些功能或调用内置功能.
您系统上最有可能int
是4字节宽,所以p - q
相等(60 - 40) / 4 == 5
.