```cpp
if (1) int a = 2;

```

This line of code is valid C++ code (it compiles at the very least) yet invalid C code (doesn't compile). I know there are differences between the languages but this one was unexpected.

I always thought the grammar was

```
if (expr) statement

```

but this would make it valid in both.

My questions are:

1. Why doesn't this compile in C?
2. Why does this difference exist?