From: chi wu > Sent: 05 April 2023 13:48 > > David Laight <David.Laight@xxxxxxxxxx> 于2023年4月5日周三 19:43写道: > > > > From: chi wu > > > Sent: 05 April 2023 09:48 > > > > > > Christoph Hellwig <hch@xxxxxxxxxxxxx> 于2023年4月5日周三 13:40写道: > > > > > > > > On Mon, Apr 03, 2023 at 09:53:04PM +0800, wuchi wrote: > > > > > - if (block > ext_block) > > > > > - return ext_pblk + (block - ext_block); > > > > > - else > > > > > - return ext_pblk - (ext_block - block); > > > > > + return ext_pblk + ((signed long long)block - (signed long > long)ext_block); > > > > > > > > And what exactly is the value add here, except for turning an easy > > > > to parse statement into a complex expression using casts? > > > > > > > Yes,it will be more complex. the original intention is to reduce the > > > conditional branch. > > > > What is wrong with just: > > return ext_pblk + block - ext_block; > > (64bit + 32bit - 32bit) > > > oh, It's my fault. I am trapped in that ext_pblk + block may overflow, > but it is ok here. thanks. That doesn't matter, it will 'un-overflow' when ext_block is subtracted. You do need the '+' to happen before the '-', ok because +/- group left to right in C. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)