From: Gene B. <ge...@de...> - 2011-07-28 13:22:29
|
On Thu, 28 Jul 2011, Jari Häkkinen wrote: >>> Are you sure about that? I just tried it with a little example and at least >>> gcc compiles both variants to the exact same assembly code. Tried it with and >>> without -O2. >>> >> That would freak me out. Doesn't "++j" mean "increment j, then test" >> whereas "j++" means "test j, then increment"? > > No, for a for loop > > for ( [1]; [2]; [3] ) > > where [3] is ++j will increment j before use. However, in an > if-statement the complete statement [3] is evaluated before the test [2] > is done. If the compiler is smart it will produce the fastest binary > code regardless ++j or j++. However, if the [3] is more complicated like > a hypothetical i = ++j + k the compiler will most probably generate > different binary code (compared to i = ++j + k). Right, but j++ will increment _after_ it's used, correct? So how could ++j vs j++ generate the same assembly code and be correct? g. -- Proud owner of F-15C 80-0007 http://www.f15sim.com - The only one of its kind. http://www.simpits.org/geneb - The Me-109F/X Project Some people collect things for a hobby. Geeks collect hobbies. ScarletDME - The red hot Data Management Environment A Multi-Value database for the masses, not the classes. http://www.scarletdme.org - Get it _today_! Political correctness is a doctrine, fostered by a delusional, illogical minority, and rabidly promoted by an unscrupulous mainstream media, which holds forth the proposition that it is entirely possible to pick up a turd by the clean end. |