For this we need to know the rules of type conversion during arithmetic operation..Quoted from Kerninghan And Ritchie textbook :
· If either operand is long double, convert the other to long double.
· Otherwise, if either operand is double, convert the other to double.
· Otherwise, if either operand is float, convert the other to float.
· Otherwise, convert char and short to int.
· Then, if either operand is long, convert the other to long.
So here before applying sizeof() operator we should know the type of the addition result of c and i which is addition of type char and short int..According to rule 4 as mentioned above both of these data types will be converted to int data type prior to addition..Thus the result will have int data type and given size of int is 4 bytes..
Hence , sizeof(c+i) will give us 4 as result..
Hence C) should be the correct answer..