Give the output on the screen of the following program

#include <stdio.h>

#define PRINT(format,x) printf(#x " = %"#format"\n",x)

int main()
{
     int integer = 5;
     char character = '5';
     char *string = "5";

     PRINT(d, string);
     PRINT(d, character);
     PRINT(d, integer);
     PRINT(s, string);
     PRINT(c, character);
     PRINT(c, integer=53);
     PRINT(d,('5'>5));

     {
          int sx = -8;
          unsigned ux = -8;
          PRINT(o,sx);
          PRINT(o,ux);
          PRINT(o,sx>>3);
          PRINT(o,ux>>3);
          PRINT(d,sx>>3);
          PRINT(d,ux>>3);
     }

     return 0;
}


Difficulty level
This exercise is mostly suitable for students
string = 4196000	// an address
character = 53
integer = 5
string = 5
character = 5
integer=53 = 5
('5'>5) = 1


sx = 37777777770
ux = 37777777770
sx>>3 = 37777777777 or 037777777777
ux>>3 = 3777777777
sx>>3 = -1 or 536970911
ux>>3 = 536870911

OR 

sx = 177770
ux = 177770
sx>>3 = 177770 or 0177770
ux>>3 = 177770
sx>>3 = -1 or 8191
ux>>3 = 8191

Back to the list of exercises
Looking for a more challenging exercise, try this one !!
Implementation of a deque using a doubly-linked list