• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSUInteger in for-loop?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSUInteger in for-loop?


  • Subject: Re: NSUInteger in for-loop?
  • From: Brett Powley <email@hidden>
  • Date: Mon, 15 Sep 2008 14:45:44 +1000


On 15/09/2008, at 2:15 PM, Alex Reynolds wrote:

I'm wondering if I'm using unsigned integers (specifically NSUInteger) properly or not.

I was under the impression that unsigned integers run from 0 to MAX_INT, but when I use them in a "for" loop within these bounds, the loop does not seem to always obey these constraints.

For example:

for (NSUInteger counter = 5; counter >= 0; --counter)
{
	NSLog(@"NSUInteger: %d", counter);
}

keeps running well after the "counter" variable turns negative:

First problem: %d is for signed integers; if you want to see the value, you want %u.
Second problem (which you'll see if you change the NSLog): counter is unsigned, so it *never* "turns negative".


The values of counter in your loop will be 5,4,3,2,1,0,MAX_UINT, MAX_UINT-1, etc

(Note that the range of values for unsigned integers is 0..MAX_UINT, not MAX_INT.)

However, the following does *not* run, starting from a negative integer (as I would expect):

for (NSUInteger counter = -5; counter <= 0; ++counter)
{
	NSLog(@"NSUInteger: %d", counter);
}

counter can't have a value of -5 because it's unsigned; the value you are getting here will be MAX_UINT-5. And that's not <=0, so the loop invariant fails the first time.


Also, the following works properly:

for (NSUInteger counter = 0; counter <= 5; ++counter)
{
	NSLog(@"NSUInteger: %d", counter);
}

That works properly because this time you're not assigning values that you think should be negative to an unsigned int.



_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


  • Follow-Ups:
    • Re: NSUInteger in for-loop?
      • From: "Sean McBride" <email@hidden>
    • Re: NSUInteger in for-loop?
      • From: Jason Coco <email@hidden>
References: 
 >NSUInteger in for-loop? (From: Alex Reynolds <email@hidden>)

  • Prev by Date: Re: NSUInteger in for-loop?
  • Next by Date: Re: NSUInteger in for-loop?
  • Previous by thread: Re: NSUInteger in for-loop?
  • Next by thread: Re: NSUInteger in for-loop?
  • Index(es):
    • Date
    • Thread