I tried
printf(\"%d, %d\\n\", sizeof(char), sizeof(\'c\'));
and got 1, 4 as output. If size of a character is one, why does \'c\'
\'c\'
In C 'a' is an integer constant (!?!), so 4 is correct for your architecture. It is implicitly converted to char for the assignment. sizeof(char) is always 1 by definition. The standard doesn't say what units 1 is, but it is often bytes.