#include <stdio.h>    // printf
#include <stdint.h>   // intptr_t, uintptr_t
#include <inttypes.h> // PRIdPTR, PRIuPTR

int main() {
    int i=3;
    // Incorrect
    printf("unsighed value of &i = %u \n",(unsigned int)&i);
    printf("int value of &i = %d\n",(int)&i);

    // Correct
    printf("pointer Address of i = %p\n",&i);
    printf("uintptr_t value of &i = %"PRIuPTR"\n", (uintptr_t)&i);
    printf("intptr_t value of &i = %"PRIdPTR"\n", (intptr_t)&i);

    printf("Value of i = %d\n",i);

    return 0;
}