gpt4 book ai didi

c - 减去指针 : how variable j is getting this value?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:53 24 4
gpt4 key购买 nike

所以我有一个 C 语言的程序。它正在运行,但我不明白输出是如何生成的??

程序如下:

#include <stdio.h>
int c;
void main() {
int a=10,b=20,j;
c=30;
int *p[3];
p[0]=&a;
p[1]=&b;
p[2]=&c;
j=p[0]-p[2];
printf("\nValue of p[0] = %u\nValue of p[2] = %u\nValue of j = %d\n\n",p[0],p[2],j);
}

这是输出:

Value of p[0] = 3213675396
Value of p[2] = 134520860
Value of j = -303953190

谁能告诉我 j 是如何得到这个值的,即 -303953190 ??应该是3079154536

最佳答案

你正在做 3213675396 - 134520860。如果你想获得值使用 *p[0]。如果您的目的是减去地址(虽然没有意义但仍然如此),预期的答案应该是 3079154536。但是由于数字太大而无法容纳因此您得到答案 -303953190。为简单起见,在数轴上考虑 char

-128 -127 -126 -125 ... 0 1 2 ... 125 126 127

现在,如果您尝试将 128 存储在超出范围的范围内,那么它将给出值 -128。如果尝试分配值 130,您将得到 -126。因此,当超出右侧限制时,您可以看到从左侧开始计数。这只是为了解释目的,只有这种行为的真正原因是由于它被存储为两个恭维的事实。可以找到更多信息 here

关于c - 减去指针 : how variable j is getting this value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906946/

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