Методы проверки границ массива в C или Objective-C - PullRequest
2 голосов
/ 11 ноября 2011

Моя цель состоит в том, чтобы не допустить условий индекса для нижней границы при использовании переменной в качестве индекса для массива. Другими словами, я хотел бы ограничить целочисленные значения переменных до> = 0. В некотором роде похож на абсолютное значение, за исключением того, что вместо отрицательного числа положительным, отрицательное число будет равно нулю.

Есть ли лучший способ сделать это, чем использовать макрос, такой как:

#define gte0(value) (value < 0) ? 0 : value

и затем оборачивать мои переменные, представляющие индекс, этим макросом, когда я получаю доступ к элементу массива? Существует ли стандартная практика проверки границ, кроме выполнения вручную в каждом месте вашего кода, прежде чем вы получите доступ к элементу массива с переменной, представляющей индекс?

Я ищу какие-либо решения в C или Objective-C.

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Требуются unsigned int или NSUInteger примитивы для индексов. Затем вам будет гарантировано значение, большее или равное нулю, вплоть до UINT_MAX или того, что определено limits.h, и вам просто нужно проверить верхнюю границу.

0 голосов
/ 11 ноября 2011

Нет способа сделать это автоматически в C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...