Pagina 1 di 1

Risolvete questo

Inviato: 20 nov 2005, 10:36
da davided87
Vorrei proporvi questo "semplice" esercizio di informatica, premettendo che non è così scontato come sembra:

#include <iostream.h>
#include <stdlib.h>
#define prod(a,b) a*b
int main()
{ int a=10;
int b=5;
int c;
c=prod(a+b,a-b);
cout<<c;
system("PAUSE");
return 0;
}

p.s. se vi è uscito 75 avete sbagliato.....non vale provarlo ad eseguire!!!

Inviato: 20 nov 2005, 11:18
da crazy_diamond
Basta sapere come vengono espanse le macro:
prod(a+b,a-b)=a+b*a-b=55

Per evitare questo problema basterebbe che la macro venisse dichiarata così:
#define prod(a,b) (a)*(b)

E bravo crazy

Inviato: 20 nov 2005, 11:33
da davided87
Grazie per la spiegazione ci ero arrivato ma non sapevo il motivo! :)