Sim, C obriga que declares as variáveis antes destas serem atribuídas e tens de indicar o tipo delas.
No entanto se as variáveis forem char e int não é problemático, porque na realidade o char guarda um inteiro de 8 bits. A serem int e double também não há problema na compilação mas perde-se a integridade do valor.
A ser string aí sim daria erro a compilar porque string é um vector de chars e terias que indicar a posição.
Imagina o seguinte caso:
Código:
char string[40];
int num;
num = string[0]; //válido e compila
num = string; //Inválido e erro a compilar
A pergunta não especifica tipos de variaveis nem nada do género, apenas pergunta se pode usar aquela expressão, e sim pode-se, mas não significa que seja sempre válida, tal como referiste e bem.