我正在学习C语言中的指针,并在GCC编译器中尝试了该程序。
当我尝试p-q
时,它给出1作为输出(因为int占用4个字节,p和q的值分别是2358844和2358840,因此输出1,因为p-q
提供4后1 * 4 = 4字节) 。
但是,一旦我尝试q-p
,它就会给出4294967295作为输出。它应该给出-1作为输出,但是我不明白为什么它给出了其他输出。
这是我的程序。
#include<stdio.h>
#include<conio.h>
void main()
{
int a=5,b=6;
int *p,*q;
p=&a;
q=&b;
printf("p = %u",p);
printf("\nq = %u",q);
printf("\nq-p = %u",q-p);
getch();
}
最佳答案
4294967295是FFFFFFFF或-1作为有符号值。您正在使用%u将其打印为未签名
关于c - 无法理解C中的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48324374/