nice explanation On Apr 9, 1:15 pm, ArPiT BhAtNaGaR <arpitbhatnagarm...@gmail.com> wrote: > COOL BRO THIS IS A GOOD SOLN > > > > > > > > > > On Tue, Apr 5, 2011 at 4:10 PM, Azhar Hussain <azhar...@gmail.com> wrote: > > Few Important things about macros, before I explain the output > > 1. Macros are replaced in passes. > > 2. Macros are not recursive. > > > regarding the output remember the rule for expansion > > "A parameter in the replacement list, *UNLESS* preceded by a # or ## > > preprocessing token or followed by a ## preprocessing token, is replaced by > > the corresponding argument after all macros contained therein have been > > expanded". > > In other words, macros are replaced "inside out" unless # or ## exists > > > printf("%s",g(f(1,2))); is replaced as #f(1,2) ---> "f(1,2)" according to > > the replacement rule. > > printf("\t%s",h(f(1,2))); As this does not replace with # or ## directly, > > "inside out" expansion leads to h("1,2") --> g('1,2") --> "1,2" > > > for the first pass > > printf("%s", "f(1,2)"); ---> g(a) #a > > printf("\t%s", h("1,2")); > > > second pass > > printf("%s", "f(1,2)"); ---->> not processed(exhausted) > > printf("\t%s", g("1,2")); --> h(a) g(a) > > > Third pass > > printf("%s", "f(1,2)"); ---->> not processed(exhausted) > > printf("\t%s", "1,2"); --> g(a) #a > > > Hope this answers your question. > > > - > > Azhar. > > > On Tue, Apr 5, 2011 at 3:22 PM, Vandana Bachani > > <vandana....@gmail.com>wrote: > > >> Hi Arvind, > >> These are preprocessor specific operators. Check out > >>http://msdn.microsoft.com/en-us/library/wy090hkc(v=vs.80).aspx > > >> -Vandana > > >> On Tue, Apr 5, 2011 at 12:45 PM, Arvind <akk5...@gmail.com> wrote: > > >>> #include<stdio.h> > > >>> #define f(a,b) a##b > >>> #define g(a) #a > >>> #define h(a) g(a) > > >>> int main() > >>> { > >>> printf("%s",g(f(1,2))); > >>> printf("\t%s",h(f(1,2))); > >>> return 0; > >>> } > > >>> i have run this program in gcc compiler and getting : f(1,2) 12 as > >>> output. > >>> can anyone explain the reason for getting this output? > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "Algorithm Geeks" group. > >>> To post to this group, send email to algogeeks@googlegroups.com. > >>> To unsubscribe from this group, send email to > >>> algogeeks+unsubscr...@googlegroups.com. > >>> For more options, visit this group at > >>>http://groups.google.com/group/algogeeks?hl=en. > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Algorithm Geeks" group. > >> To post to this group, send email to algogeeks@googlegroups.com. > >> To unsubscribe from this group, send email to > >> algogeeks+unsubscr...@googlegroups.com. > >> For more options, visit this group at > >>http://groups.google.com/group/algogeeks?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Algorithm Geeks" group. > > To post to this group, send email to algogeeks@googlegroups.com. > > To unsubscribe from this group, send email to > > algogeeks+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/algogeeks?hl=en. > > -- > Arpit Bhatnagar > (MNIT JAIPUR)
-- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.