Assuming a purely non-optimizing compiler, is there any difference in machine code between initializing a variable and assigning it a value after declaration?
An important distinction comes into play when you add a const qualifier:
const
int const x = 2;
is valid C
int const x; x = 2;
isn't. Another important difference is for static variables:
static
static int x = f();
is invalid C
static int x; x = f();
is valid.