It sounds stupid, but over the years I haven't been able to come up with a use case that would require this. A quick google search didn't reveal anything worthwhile.
From memory there was a use case mentioned by Bjarne Stroustrup but i can't find a reference to it.
So why can't you have this in C languages:
int val = 0;
if val
doSomehing();
else
doSomehinglse();
EDIT I can accept the "we couldn't be bothered adding support to lexer" reason, I just want to figure out if this syntax breaks other language constructs. Considering how many whacky syntax features there are in C/C++, i hardly think this would have added much complexity.
Community Wiki now. So far the overwhelming consensus is that such syntx will wreck havoc with operators as pointed out here http://stackoverflow.com/questions/2061593/why-do-c-languages-require-parens-around-a-simple-condition-in-an-if-statement/2061613#2061613 and here http://stackoverflow.com/questions/2061593/why-do-c-languages-require-parens-around-a-simple-condition-in-an-if-statement/2061667#2061667.
Such syntax can also introduce ambiguity for while loops, although I am struggling to make it fit with the if statement: http://stackoverflow.com/questions/2061593/why-do-c-languages-require-parens-around-a-simple-condition-in-an-if-statement/2061663#2061663.
I think the best answer I've seen so far is in the comment by comment by hhafez. To paraphrase: In order to separate the condition from the statement one must either enforce parentheses around the condition or the braces around the statement. C chose the former in order to support missing braces.