Risolvete questo

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
Avatar utente
davided87
Messaggi: 35
Iscritto il: 01 gen 1970, 01:00
Località: Provincia di Lecce
Contatta:

Risolvete questo

Messaggio 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!!!
*******Davide
crazy_diamond
Messaggi: 14
Iscritto il: 31 ott 2005, 14:35

Messaggio 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)
Avatar utente
davided87
Messaggi: 35
Iscritto il: 01 gen 1970, 01:00
Località: Provincia di Lecce
Contatta:

E bravo crazy

Messaggio da davided87 »

Grazie per la spiegazione ci ero arrivato ma non sapevo il motivo! :)
Rispondi