Expression same but different results why

Reply

Join Date: Dec 2007
Posts: 1
Reputation: anwar7517525 is an unknown quantity at this point 
Solved Threads: 0
anwar7517525 anwar7517525 is offline Offline
Newbie Poster

Expression same but different results why

 
0
  #1
Dec 3rd, 2007
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()
{
int x=-250;
x = --x + --x + --x;
printf("%d",x);
}//it give -259

In Visual C++ 6.0
#include<iostream>
using namespace std;
main()
{
int x=-250;
x = --x + --x + --x;
cout <<x;
}//it give -257

In Java 1.3
class Test
{
public static void main(String abc[])
{
int x=-250;
x = --x + --x + --x;
System.out.print(x);
}//it give -256
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 5,851
Reputation: Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute 
Solved Threads: 749
Team Colleague
Salem's Avatar
Salem Salem is offline Offline
Void main'ers are DOOMed

Re: Expression same but different results why

 
0
  #2
Dec 3rd, 2007
> 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.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC