Re: union to get parts of integer

Glynn Clements <[email protected]>
Newsgroups gmane.linux.c-programming
Message-ID <[email protected]>
Tim Walberg wrote:

> >>	((char *)&i)[0].
> >>	
> >>	However, are you sure that you need this?  Don't you need "(i & 255)",
> >>	"((i >> 8) & 255)", etc. instead?
> 
> It's likely that either the union or direct pointer expressions yield
> more efficient code, as they can probably be compiled to direct byte-width
> load/store instructions, rather than shifts and logical ands... However,
> if the code's not in a critical path for performance, it probably won't
> matter. And on some architectures, there may not be byte-width operations,
> I guess...

The cast/union versions will give different results depending upon the
CPU's byte order. The shift/mask versions will give the same results
regardless of byte order.

-- 
Glynn Clements <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.