Questa domanda è stato chiesto di me in una finta intervista ... Davvero siamo sorpresi di trovare le risposte scomode ...Confuso elevando al quadrato macro SQR in c
considerano una macro:
#define SQR(x) (x*x)
Esempio 1:
SQR(2) //prints 4
Esempio 2:
Se SQR (1 + 1) è dato non somma (1+1)
-2
ma piuttosto ...
SQR(1+1) //prints 3
Awkward giusto? Qual è il motivo? Come funziona questo codice?
NOTA: ho cercato SO ma non ho trovato nessuna domanda pertinente. Se ci sono gentilmente per favore condividilo!
Hint : Leggi l'output del ** pre ** - processore. – SLaks
'SQR (1 + 1)' espandi a '(1 + 1 * 1 + 1)' == 3, cambia in ((x) * (x)) – BLUEPIXY
Questo è il preprocessore C. È possibile ottenere lo stesso comportamento se si è utilizzato il preprocessore C con qualsiasi lingua. – user7116