On 25/11/13 09:52, Jonathan M Davis wrote:
Yes, they're aliases, but you have to worry about them. Take this code for
instance.

int len = arr.length;

That code will compile as 32-bit, but it will _not_ compile as 64-bit, because
length is size_t, which on 32-bit systems happens to be uint, which implicitly
converts to int, whereas on 64-bit systems, it's ulong, which does _not_
implicitly convert to it.

You're quite right -- I was just thinking about underlying stuff along the lines of what Iain was pointing out for real, not "user-land" cases like this.

To be honest, I assumed that anyone with any experience or common sense would understand stuff like the example you've described, and not write such code. But that's probably very very naive ... :-)

The size_t case I rather like to think of is:

     size_t m = ...;
     size_t p = 1 << m;    // should this be 1U, 1UL ... ?

Reply via email to