void main()
{
int a=1;
printf("%d %d %d",a,++a,a++);
}
the output is supposed to be 1 2 2....but it is 3 3 1
this is due to calling conventions of C. if anyone can
explain me how it happens?
Answer Posted / pranjal kumbang
Output:3 3 1 This
is because,C's calling convention is from right to left.That
is ,firstly 1 is passed through the expression a++ and then
a is incremented to 2.Then result of ++a is passed.That is,a
is incremented to 3 and then passed.Finally,latest value of
a,i.e. 3,is passed.Thus in right to left order,1 ,3, 3 get
passed.Once printf() collects them,it prints them in the
order in which we have asked it to get them printed(and not
the order in which they were passes).thus 3 3 1 gets
printed.
Is This Answer Correct ? | 8 Yes | 2 No |
Post New Answer View All Answers
if (i = 0)printf ("True"); elseprintf("False"); Under what conditions will the above print out the string "True" a) Never b) Always c) When the value of i is 0 d) all of the above
What is class and object in c?
how many errors in c explain deply
what is the differnce between programing langauge and tool? is sas is a programing langauge r tool?
What is a stream in c programming?
#include
What is clrscr ()?
What is the purpose of the statement: strcat (S2, S1)?
Device an algorithm for weiler-atherton polygon clipping, where the clipping window can be any specified polygon
What are loops c?
What is the difference between volatile and const volatile?
What are the scope of static variables?
What are structure members?
c program for searching a student details among 10 student details
What is pointer to pointer in c?