Значение перечислителя имеет значение -2147483648, которое нельзя сузить до типа «NSUInteger» (он же «unsigned long») - PullRequest
0 голосов
/ 02 июля 2018

У меня есть перечисление, которое оставляет смещение 1 << type для каждого типа, но сегодня я добавил новый тип 31 << atype, к сожалению, Xcode дал мне ошибку

Значение перечислителя имеет значение -2147483648, которое нельзя сузить до типа «NSUInteger» (он же «unsigned long»)

enter image description here

Это говорит о том, что значение превышает максимальное значение unsigned long. Интересно, я никогда не сталкивался с такой ситуацией.

Почему это произойдет? Как мне это решить?

Заранее спасибо, ребята.

1 Ответ

0 голосов
/ 02 июля 2018

Это потому, что буквенная константа 1 имеет тип NSInteger, что означает, что первый байт определяет значимость значения. Все, что вам нужно сделать, это привести его к NSUInteger, так что:

(NSUInteger)1 << 31
...