【发布时间】:2016-04-07 06:16:20
【问题描述】:
#include <stdio.h>
int main(void) {
int a[5] = {0, 1, 2, 3, 4}, *p;
p = a;
printf("%d\n%d\n%d\n%d\n%d\n", p, *p);
return 0;
}
当我执行这段代码时,我得到了 p 的负值。我研究过地址不能为负数。那为什么我得到一个负值
【问题讨论】:
-
"地址不能为负数" - 当然可以。不过,您的代码具有未定义的行为,因此您不应从其输出中得出任何结论。
-
@Mat;有否定地址的例子吗?
-
@hacks:x86_64 上一半的地址空间(除非你想把它们都视为无符号,显然)
-
您可以使用
%u打印无符号值。