void main()
{
int i=5;
printf("%d",i+++++i);
}
Answers were Sorted based on User's Feedback
Answer / visu
i+++++i=i++ + ++i
remember this expression is nothing but adding two i's
now unary operators hav higher precedence than binary
=>++ executes first
so i++ =5 (since value changes after statement)
and ++i makes it i=6
as i said its jus adding to i's
now ans=i+i=6+6=12
| Is This Answer Correct ? | 15 Yes | 5 No |
Answer / surenda pal singh chouhan
Compiler Error
Explanation:
The expression i+++++i is parsed as i ++ ++ + i which is an
illegal combination of operators.
| Is This Answer Correct ? | 17 Yes | 9 No |
Answer / jaroosh
This is a very interesting issue, to solve this, first you
have to note an interesting thing about pre and
postincrementation operators :
a) postincrementation operator instantly MAKES variable an
RVALUE in expression, this is because postincrement operator
doesnt keep track of how many postincrements were made so it
is NOT cumulative (ie u can only use one postincrementation
for variable)
b) preincrementational operator first increments variable
and THEN uses it in expression so there is no need to keep
track of how many preincrementations were made thus
preincrement is cumulative.
Following lines make the point :
i++ = 1; //WRONG! i++ becomes RVALUE,you cannot assign to it
++i = 1; //OK! you first incremented and then assigned.
and thus :
i++++; //WRONG! (i++) is RVALUE so you cannot (RVALUE)++
++++i; //OK! ++(++i)
Now, since postfic ++ has the higher precedence, :
i+++++i
is treaded like :
(i++)++ + i
which will throw compiler error.
i++ + ++i
is however fine, so as
i+ ++++i
This issue might be compiler specific, Im not sure.
| Is This Answer Correct ? | 5 Yes | 2 No |
Answer / sheetal
gives error
"error C2105: '++' needs l-value"
because it parses above expression in "((i++)++)+i), so in
2nd unary operator it searches for l-value.
If we modify above pgm into following way:-
void main()
{
int i=5;
printf("%d",((i++)+(++i)));
}
it will give answer 12.
because once last pre-unary increment operator is operated,
i is incremented to 6 and 6+6 = 12.
if we put one more print for i's value, it will give i =7.
because first post-increment operator is operated after
first printf statement as follows.
void main()
{
int i=5;
printf("%d",((i++)+(++i)));
printf("%d\n",i); // ===> i =7
}
| Is This Answer Correct ? | 4 Yes | 1 No |
Answer / visu
hey sulochana hav u tried it in a compiler..
cuz for me the result for that is 12.
i+++++i might give u an error but for sure (i++ + ++i)=12
| Is This Answer Correct ? | 7 Yes | 5 No |
Answer / vamsi
Hi Guys.....
The answer is
6+6 = 12
The compiler will take the expression as
i++ + ++i
And the expression would be evaluated from Right to left ...
so answer is 12 and i=7;
| Is This Answer Correct ? | 1 Yes | 0 No |
How do I get an accurate error status return from system on ms-dos?
to print the salary of an employee according to follwing calculation: Allowances:HRA-20% of BASIC,DA-45% of BASIC,TA-10%. Deductions:EPF-8% of BASIC,LIC-Rs.200/-Prof.Tax:Rs.200/- create c language program?
How can I find the modification date of a file?
What is console in c language?
Sir,please help me out with the code of this question. Write an interactive C program that will encode or decode multiple lines of text. Store the encoded text within a data file, so that it can be retrieved and decoded at any time. The program should include the following features: (a) Enter text from the keyboard, encode the text and store the encoded text in a data file. (b) Retrieve the encoded text and display it in its encoded form. (c) Retrieve the encoded text, decode it and then display the decoded text. (d) End the computation. Test the program using several lines of text of your choice.
what is void pointer?
What is the difference between declaring a variable and defining a variable?
Does c have an equivalent to pascals with statement?
which operator is known as dummy operator in c?
Can a local variable be volatile in c?
How arrays can be passed to a user defined function
I came across some code that puts a (void) cast before each call to printf. Why?