To pytanie zadano mi w pozorowanej wywiadzie ... Naprawdę mam zaskoczeni niewygodnych odpowiedzi ...Mylić przez kwadratury makro SQR wc
rozważyć makro:
#define SQR(x) (x*x)
Przykład 1:
SQR(2) //prints 4
Przykład 2:
Jeśli SQR (1 + 1) jest podana nie sumują (1+1)
do 2
ale raczej ...
SQR(1+1) //prints 3
Awkward prawo? Jaki jest powód? Jak działa ten kod?
UWAGA: Szukałem SO, ale nie mogłem znaleźć żadnych istotnych pytań. Jeśli są uprzejmi, prosimy o podzielenie się nimi!
Hint : Czytaj wynik procesora ** pre **. – SLaks
'SQR (1 + 1)' rozwiń na '(1 + 1 * 1 + 1)' == 3, zmień na ((x) * (x)) – BLUEPIXY
To jest preprocesor C. Możesz osiągnąć to samo zachowanie, jeśli używałeś preprocesora C z dowolnym językiem. – user7116