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 :)