我正在学习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/

10-11 22:59
查看更多