2013-05-13 2 views
2

Учитывая следующий фрагмент кода:Что такое значение по умолчанию для NSUInteger в локальной области?

- (void)doSomething 
{ 
    NSUInteger count; 
} 

Что считать? Гарантируется ли оно 0?

+1

Спасибо всем. Я на самом деле полагал, что это будет память мусора, но явным образом спросил, гарантировано ли оно, что он равен 0. Потому что я решил, что это будет более полезно для следующего человека, который нашел этот вопрос. – funroll

ответ

13

Нет, он не гарантированно равен нулю, так как это локальная автоматическая переменная. Без инициализации его значение неопределенно. Если вы хотите, чтобы это было равно нулю, либо инициализировать его:

NSUInteger count = 0; 

или определить его как static:

static NSUInteger count; 

поскольку переменные со статической продолжительностью хранения неявно intialized к нулю, но учтите, что это имеет сторону эффекты (а именно, значение сохраняется между вызовами функций).