954,219 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Expression same but different results why

I am Anwar as a intermediate level currently programming practice in c, c++ and java . In following programs I confused in these expressions that expressions are same but result are different on these results few teachers said it is the problem of compilers.

In Turbo C 3.0
main()
{[INDENT]int x=-250;[/INDENT][INDENT]x = --x + --x + --x;[/INDENT][INDENT]printf("%d",x);[/INDENT]}//<strong>it give -259</strong>
In Visual C++ 6.0
#include<iostream>
using namespace std;
main()
{[INDENT]int x=-250;[/INDENT][INDENT]x = --x + --x + --x;[/INDENT][INDENT]cout <<x; [/INDENT]}//<strong>it give -257</strong>
In Java 1.3
class Test
{
public static void main(String abc[])
{[INDENT]int x=-250;[/INDENT][INDENT]x = --x + --x + --x;[/INDENT][INDENT]System.out.print(x); [/INDENT]}//<strong>it give -256</strong>

anwar7517525
Newbie Poster
1 post since Dec 2007
Reputation Points: 10
Solved Threads: 0
 

> on these results few teachers said it is the problem of compilers.
No, it's a problem with the teachers not knowing the language rules well enough.

For C and C++, multiple side effects on the same variable has ALWAYS BEEN UNDEFINED.
What does that mean, it means the compiler is free to interpret it however it wants (or maybe even not at all). Any answer you get is just like rolling a dice.
http://c-faq.com/expr/index.html
- my answer is -256
- your answer is -257
- his hard disk has been reformatted.

As for Java, I've no idea whether the Java standard makes any claims about the evaluation order. It's certainly not comparable to C or C++.

The bottom line is that the code is broken. Don't use such constructs in your program, and don't waste time trying to figure out the mysteries of how your compiler seems to work.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You