On Sat, Sep 27, 2008 at 2:49 PM, Daniel Luis dos Santos
<[EMAIL PROTECTED]> wrote:
> Hello,
>
> I have a piece of C code that generates an unsigned long long from an
> sequence of unsigned char's.
>
> When I do sizeof(unsigned long long) i get 8.
> Afterwards I try to shift each unsigned char into its position along the
> destination unsigned long long variable, but I get a warning from the
> compiler that I am shifting beyond the type's capacity. That is not
> surprising since I am targeting 32 bit.

This has nothing to do with 32-bit vs. 64-bit. In C, when you shift an
unsigned char, the result is an int (or unsinged int on some
platforms). GCC is warning you that you are shifting beyond the
capacity of an int. To avoid this, cast your unsigned char's to
unsigned long longs *before* you shift.

> Then I don't understand why the size of returns 8. Shouldn't it return 4 ?

unsigned long long is *always* at least 64-bits. This is guaranteed by
the C standard.

-- 
Clark S. Cox III
[EMAIL PROTECTED]
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to