Re: duplicated modulo
Bastian Bloessl <[email protected]> Fri, 01 Apr 2011 12:28:09 +0200
| Newsgroups | org.kernel.vger.linux-c-programming |
|---|---|
| Message-ID | <[email protected]> |
Am 01.04.2011 12:19, schrieb Nicolas Kaiser: > * "Michal Nazarewicz"<[email protected]>: >> On Fri, 01 Apr 2011 11:41:13 +0200, Nicolas Kaiser wrote: >>> I'm curious: a duplicated modulo operation can't possibly make >>> any difference, can it? >>> >>> diff -u -p ./arch/powerpc/platforms/powermac/nvram.c >>> /tmp/nothing/arch/powerpc/platforms/powermac/nvram.c >>> --- ./arch/powerpc/platforms/powermac/nvram.c 2011-03-31 >>> 09:52:41.674292401 +0200 >>> +++ /tmp/nothing/arch/powerpc/platforms/powermac/nvram.c >>> @@ -246,7 +246,6 @@ static u32 core99_calc_adler(u8 *buffer) >>> high = 0; >>> for (cnt=0; cnt<(NVRAM_SIZE-CORE99_ADLER_START); cnt++) { >>> if ((cnt % 5000) == 0) { >>> - high %= 65521UL; >>> high %= 65521UL; >>> } >>> low += buffer[cnt]; >> >> It's not just a module. It's also an assignment. > > Sure. But I fail to see where between > > a %= b; > a %= b; > > and > > a = (a % b) % b; > > and > > a %= b; > > would be a difference? Perhaps an issue with signed / unsigned, or long vs. int?