Here we are given 'j' which is a pointer to a variable of type 'char' and in other words hence contains address of a data which is of 'char' type..
Now j = (char*) &a assigns the address of a to 'j' but after doing typecasting...
The significance of typecasting means the data stored in memory address of 'a' will now behave as 'char' .Specifically now if we access data by dereferencing 'j' , the data will be accessed one char at a time ..Normally this is 1 Byte..So it will be accessed 1 B at a time..Same holds true for incrementation as well..
Data type float occupies 4 B of data..But now with the typecasting to char , the data stored in address of 'a' will be accessed bytewise starting from lowermost byte following Little Endian mechanism[Lower byte stored in lower address]...
Now we have :
printf("%d\n" , *j) ;
So we are printing integer equivalent of the concerned byte which is nothing but ASCII equivalent of that byte(char)..
Hence A) should be the correct answer..