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 struct node in c?
How do you do dynamic memory allocation in C applications?
Write an efficient algo and C code to shuffle a pack of cards.. this one was a feedback process until we came up with one with no extra storage.
What do you mean by dynamic memory allocation in c? What functions are used?
Is main an identifier in c?
Why can’t we compare structures?
What does sizeof function do?
What is a program flowchart and explain how does it help in writing a program?
What is pivot in c?
What is FIFO?
Hai what is the different types of versions and their differences
Explain how do you sort filenames in a directory?
What is selection sort in c?
Simplify the program segment if X = B then C ← true else C ← false
Is python a c language?