Path: utzoo!attcan!uunet!mcvax!kth!sunic!chalmers!cs.chalmers.se!augustss From: augustss@cs.chalmers.se (Lennart Augustsson) Newsgroups: comp.unix.wizards Subject: Re: C code optimization for a = (b < c); Message-ID: <3102@fnatte.cs.chalmers.se> Date: 28 May 89 21:49:41 GMT References: <19787@adm.BRL.MIL> Sender: news@cs.chalmers.se Organization: Chalmers University of Technology, Sweden Lines: 22 In article <19787@adm.BRL.MIL> WILCOX@nosc-tecr.arpa writes: > > ... > int a; > int b, c; > a = (b < c); > > [ should be replaced by ] > >a = (unsigned)((b - c) >> (WIDTH_OF_INT_IN_BITS - 1)); > Good idea, but it doesn't work. Assuming 16 bit integers, take b = -32768; (0x8000) c = 32767; (0x7fff) now clearly b < c will evaluate to 1, but (unsigned)((b - c) >> 15 will evaluate to 0, since b-c evaluates to 1 (0x0001). -- Lennart Augustsson Lennart Augustsson Email: augustss@cs.chalmers.se or augustss@chalmers.csnet