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?
Answers were Sorted based on User's Feedback
Answer / sumant
In C the parameters are pushed on the stack from right to
left. So
1> it will push a=1 on the stack and do a++ making a=2
2> it will porform ++a making a = 3 and push value 3
3> it will push a on the stack which is 3
so the stack will have values 1 3 3 and it will POP in
the reverse order and thus printf will display 3 3 1
| Is This Answer Correct ? | 52 Yes | 11 No |
Answer / vishnu
first calculations will be done from right to left and then
prints accroding to the parameters passed.
| Is This Answer Correct ? | 29 Yes | 8 No |
Answer / sathish
execution does from right to left and while printing it goes from left to right.
| Is This Answer Correct ? | 18 Yes | 3 No |
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 |
Answer / hemanth
All,
output of above code is compiler depended i.e the order of
evalulation.
| Is This Answer Correct ? | 8 Yes | 5 No |
Answer / keerthi
while printing the output it starts from right hand
side ..so first 'a++' value is printed then '++a' value and
last it prints 'a' value
| Is This Answer Correct ? | 12 Yes | 16 No |
Explain 'bus error'?
without using control structures and control structures find the max and min of given 2 nos
output for following code??? main() { int x=2,y,z; x*=3+2; printf("1.%d\n",x); x*=y=z=4; printf("2.%d %d %d\n",x,y,z); x=y==z; printf("3.%d\n",x); x==(y=z); printf("%d",x); }
What are reserved words with a programming language?
What does static mean in c?
Is c++ based on c?
What is new line escape sequence?
program to find middle element of linklist?
6)What would be the output? main() { int u=1,v=3; pf("%d%d",u,v); funct1(&u,&v); pf("%d%d\n",u,v); } void funct1(int *pu, int *pv) { *pu=0; *pv=0; return; } a)1 3 1 3 b)1 3 1 1 c)1 3 0 0 d)1 1 1 1 e) 3 1 3 1
for(i=0;i=printf("Hello");i++); printf("Hello"); how many times how will be printed?????????
What does 3 periods mean in texting?
We can draw a box in cprogram by using only one printf();& without using graphic.h header file?