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
What is structure padding and packing in c?
Explain how do you sort filenames in a directory?
find the sum of two matrices and WAP for it.
write a progrmm in c language take user interface generate table using for loop?
Write a program to identify if a given binary tree is balanced or not.
Is it fine to write void main () or main () in c?
Apart from dennis ritchie who the other person who contributed in design of c language.
Wt are the Buses in C Language
Explain how can I manipulate strings of multibyte characters?
What is the difference between char array and char pointer?
What does a derived class inherit from a base class a) Only the Public members of the base class b) Only the Protected members of the base class c) Both the Public and the Protected members of the base class d) .c file
What are the types of type specifiers?
What is structure of c program?
What is c basic?
What is s or c?