Re: [Dev-C++] Question about increment..
Open Source C & C++ IDE for Windows
Brought to you by:
claplace
|
From: Mani <man...@gm...> - 2012-09-21 01:08:30
|
I think I might argue with one point way below.. please scroll down.. On Thu, Sep 20, 2012 at 4:08 PM, Reid Thompson <Rei...@at...> wrote: > On Thu, 2012-09-20 at 12:54 -0400, Mani wrote: >> Hi, >> >> I recently to try some toy things in DevC++ (version I am using is 4.9.9.2) >> >> The code I had was this: >> >> int a = 1, b = 2; >> int c = a++ + b++ + a + b; >> >> cout << "a = " << a << endl; >> cout << "b = " << b << endl; >> cout << "c = " << c << endl; >> >> I expected the c value to be 8 (by operator precedence, ++ has higher >> precedence than +, so do in order: >> a++, then b++ >> then do (a++ + b++) >> then add the previous result and a >> then add the previous result and b >> >> but the answer I got was 6.. >> >> what might be the reason for this..?? >> >> thanks, murali >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://ad.doubleclick.net/clk;258768047;13503038;j? >> http://info.appdynamics.com/FreeJavaPerformanceDownload.html >> _______________________________________________ >> Dev-cpp-users mailing list >> Dev...@li... >> TO UNSUBSCRIBE: http://www23.brinkster.com/noicys/devcpp/ub.htm >> https://lists.sourceforge.net/lists/listinfo/dev-cpp-users > > [16:06:54][94s] rthompso@raker2> ~ > $ cat helloworld.c > #include <stdio.h> > #include <stdlib.h> > int main(void) > { > int a = 1, b = 2; > int c = a++ + b++ + a + b; > > printf("c is %d\n", c); > a = 1; > b = 2; > c = ++a + ++b + a + b; > > printf("c is %d\n", c); > > return 0; > > } > > [16:07:01][0s] rthompso@raker2> ~ > $ cat Hello.cs > using System; > > class Program > { > static void Main() > { > int a = 1, b = 2; > int c = a++ + b++ + a + b; > > Console.WriteLine(c); > Console.WriteLine("Hello world!"); > > a = 1; > b = 2; > c = ++a + ++b + a + b; > Console.WriteLine(c); > Console.WriteLine("Hello world!"); > > > a = 1; > b = 2; > c = a++ + b++; > int d = c + a + b; > > Console.WriteLine(d); > } > } > > [16:07:26][0s] rthompso@raker2> ~ > $ ./a.out > c is 6 > c is 10 > > [16:07:30][0s] rthompso@raker2> ~ > $ mono Hello.exe > 8 > Hello world! > 10 > Hello world! > 8 > > > gcc C > n++ -> increment after use >> int a = 1, b = 2; >> int c = a++ + b++ + a + b; > c = 1 + 2 + 1 + 2 > c = 6 > > ++n -> increment before use >> int a = 1, b = 2; >> int c = ++a + ++b + a + b; > c = 2 + 3 + 2 + 3 > c = 10 > > mcs csharp > evidently creates an incremented copy and uses it with the original > value >> int a = 1, b = 2; >> int c = a++ + b++ + a + b; > c = 2 + 3 + 1 + 2 > c = 8 >>>> BEGIN: Murali: How can you be sure that this is what happens.. I am inclined to believe what happens is: c = 1 + 2 + 2 + 3 c = 8 >>>> END: Murali > > ++n -> increment before use >> int a = 1, b = 2; >> int c = ++a + ++b + a + b; > c = 2 + 3 + 2 + 3 > c = 10 > > a = 1; > b = 2; > c = a++ + b++; > int d = c + a + b; > c = 5 > d = 5 + 1 + 2 > d = 8 > > |