On May 26, 2011, at 8:32 PM, Graham Cox wrote:

> 
> On 27/05/2011, at 11:23 AM, Quincey Morris wrote:
> 
>> On May 26, 2011, at 18:00, Graham Cox wrote:
>> 
>>>     unsigned seed = (unsigned)([NSDate timeIntervalSinceReferenceDate] * 
>>> 10000.0);
>>>     
>>>     NSLog(@"launched, seed = %ld", seed );
>> 
>> Also, be careful here, because %ld is the wrong format specifier for type 
>> 'unsigned'. Whether it logs the right value is going to be architecture 
>> dependent.
> 
> Ok, then that raises the question what should I use?

%u

> I'm confused about how to correctly write format specifiers for both 32 and 
> 64-bit runtimes. The 64-bit porting guide doesn't spell it out (yet you end 
> up with code peppered with warnings that you should examine the use of the 
> format specifier without docs properly explaining their correct use). It's 
> also not clear to me whether just 'unsigned' is a fixed-size quantity or not, 
> depending on architecture.

Just "unsigned" is shorthand for "unsigned int".  Between the Mac's 32-bit and 
64-bit architectures, int doesn't change size.  That can't be generalized, 
although it's darn-near universal.

However, that's irrelevant.  The format specifiers don't indicate a size.  They 
indicate a type.  For "unsigned", you use "%u".  That's the end of the story.


> Someone mentioned that random() has been superseded. Again??! It seems to me 
> that random number generators get superseded every other week. How is anyone 
> supposed to know what is considered current best practice? Especially as for 
> such functions there doesn't seem to be a simple way to see in man pages or 
> other documentation what's deprecated.

random() has not been deprecated or even superseded.  arc4random() has higher 
quality pseudo-randomness, which is probably what prompted the claim, but as 
David Duncan said that doesn't justify the claim.  It's a question of 
tradeoffs.  arc4random() is slower and non-reproducible.  (The slowness may 
matter in this case, where I asserted it doesn't matter when seeding, because 
you usually seed once and generate many times.)

Regards,
Ken

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to