a) Escreva a macro ZAP(x, v1, v2) que, caso x

b) Qual a expansão que o pré-processador faria do seguinte código:

#define MAX 43

#define MIN -1

main()

{

int i, j = (int) ‘a’;

i = ZAP(i+j, MAX-1, MIN-1);

}

Passo 1

Fala aí! Quando se trata de macros, sempre ficamos com um pé atrás, né? Mas não estressa que esse aqui é bem tranquilo. Olha só, para definirmos este cara, vamos usar a diretiva #define da seguinte forma:

Repare que simplesmente escrevemos aquilo que foi dito pelo enunciado em termos de programação. Com o operador ?, queremos dizer que:

Se x for menor ou igual a zero, devolva x*v1, se não, x*(-v2).

Tranquilo, né?

Passo 2

Para resolver a próxima, basta percebemos que se trata de uma simples questão de substituição de variáveis. Olha só, invocamos o macro ZAP(x, v1, v2) e passamos como parâmetros (i+j, MAX-1, MIN-1), certo? Então, lembrando que definimos MAX como 43 e MIN como -1, vamos ver como fica:

Simplesmente substituímos x por i + j, v1 por 43 – 1 e v2 por -1 -1.

Resposta

Ei, a resposta está no passo a passo :)