The semicolon is a statement terminator in C to help the parser figure out where the statement ends since, by default, statements in C (and C++ and Java) can have any number of lines.if your question was why the C folks chose the semicolon character specifically, I'd guess it's probably because C came out around the time ALGOL, PASCAL and PL/I and they all used semicolons as either separators or terminators.
In C a statement does not necessarily mean action(like increment and decrement and so on) statement,even assigning and declaring a variable will be considered as statements.Take a look at this code
for(i=0;i<10;i++)
{
printf("%d",i);
}
see these points:
1.There is no semicolon after for,because if that's the case the body of loop is not at all executed
but a delay takes place,as continuous increment and condition check takes place till the condition fails.
2.i=0 i.e. assign i with zero,is a statement and hence end with ;
3.i<10 a relational statement so end with ;
4.i++ although a statement don't end with semicolon as it is against the syntax of for loop.
5.printf is a statement and hence end with ;
Now that's the use of ; in C.