Well apart from the fact that your code has no guards and a syntax error it's to do with automatic conversion of numbers and a comparison. It should read...
unsigned int i=23;
signed char c=-23;
I can see from your profile that you have completed the C course so this is not new to you. If you need further details see...
Relational and comparison operators
Selection statements: if and else
Fundamental data types
Ajith u are comparing signed char with unsigned int
The concept is if both operands have same type then no conversion will occur bt
if ur unsigned int operand type of rank greater than or equal to the other operand then the signed operand is converted to the type of unsigned int operand
U can check this by this code
Unsigned int i=23;
Signed char j=-23;
Printf ("%u",(unsigned int)y);
and if u have more than one statement to execute then only u need to apply braces after if()
otherwise it is not necessary to apply braces if() will read 1 line by itself and after that it will terminate.