Possibly because declarations were originally not statements in C? You could only declare variables at the start of a function, but not assign them to something at the same time.
Not sure why it still wouldn’t be allowed, though, especially if an empty statement can be a statement.
Declarations are separate entities to statements, because declarations do not translate to a machine code instruction
Labels only make sense when attached to statements because they need to point to a particular machine code instruction <-- This should have been changed at least when declarations were allowed to be mixed with statements in compound statements
Definitions are declarations plus an assignment, let’s make them a subset of a declaration <-- I think this is the biggest mistake of them all
“Well, it’s already been that way for 40 years, too late to change it now!”
question, why is a declaration not a statement?
from what i could find “because it was designed that way”
For what it’s worth, C23 has updated labels to allow being placed before declarations.
Possibly because declarations were originally not statements in C? You could only declare variables at the start of a function, but not assign them to something at the same time.
Not sure why it still wouldn’t be allowed, though, especially if an empty statement can be a statement.
I think it evolved like that:
Sometimes saying nothing is the loudest statement you can make. ;-)
And NOP is a perfectly reasonable instruction.
When it’s designed to be an expression
That might make sense even if it looks weird. Kinda like a for loop.