Instruções de expressão
Instruções de expressão são instruções compostas por expressões completas.
Vejamos um código de exemplo:
int main(void)
{
// Instrução de expressão, pois chamadas de funções são expressões.
printf("Digite um número inteiro: ");
// Declaração, não é uma instrução
int num;
// Instrução de expressão, pois chamadas de funções são expressões.
scanf("%d", &num);
// Instrução de expressão. Contém a expressão completa num = num * 2
num = num * 2;
// Instrução de expressão, pois chamadas de funções são expressões.
printf("O dobro do número digitado é %d.\n", num);
// Instrução return
return 0;
}
Uma expressão completa é uma expressão que não está contida em outra.
a = 2 * 8 / 3;
No trecho acima a expressão a = 2 * 8 / 3
é completa, enquanto as demais não.
A expressão 2
não é completa pois está contida em 2 * 8
, a expressão 2 * 8
não é completa pois está contida em 2 * 8 / 3
, e a expressão 2 * 8 / 3
não é
completa pois está contida em a = 2 * 8 / 3
.
O diagrama a seguir demonstra visualmente a composição da mesma expressão:
flowchart LR exp0[a]-----exp6["a = 2 * 8 / 3"] exp1[2]---exp4[2 * 8] exp2[8]---exp4 exp4---exp5 exp3[3]----exp5[2 * 8 / 3] exp5---exp6
Para saber qual expressão está contida em qual, utilizamos as regras de
precedência e associatividade de operadores: a = 2 * 8 / 3
é o mesmo que
((a) = (((2) * (8)) / (3)))
, e a partir disso basta notar quais parênteses estão
contidos entre outros parênteses.