From 5f1645eb510d76ffb07c07fa09bffdea01959c03 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 4 Jul 2022 14:41:07 +0300 Subject: [PATCH] =?utf8?q?=D0=A2=D0=B8=D0=BF=20=D0=BF=D0=B5=D1=80=D0=B5?= =?utf8?q?=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=B8=D0=BD=D0=B4=D0=B5?= =?utf8?q?=D0=BA=D1=81=D0=B0=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B0?= =?utf8?q?=20=D0=B2=20=D0=A1=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://stackoverflow.com/questions/3174850/what-is-the-correct-type-for-array-indexes-in-c https://sergvasiliev.medium.com/about-size-t-and-ptrdiff-t-a1654234d842 Вот размеры и длины я привык (и считаю корректным) указывать в size_t. Но если хочется итерироваться по массиву, указывать элемент в нём, то какой тип применять для переменной содержащей индекс? size_t плох тем, что он беззнаковый, так что при логической ошибке или переполнении его значение может стать огромным из-за переполнения и оно уйдёт в бесконечный цикл например. Подобное отлаживать не очень приятно. А я уже не раз напарывался на подобную ошибку. Хочется использовать число со знаком. int может быть слишком маленьким. ssize_t определён только в POSIX и гарантирует только [-1, SSIZE_MAX]. Куча людей указывается на ptrdiff_t. Но и он может, очевидно, быть меньше size_t. Посмотрел код всяких других проектов серьёзных, типа Redis. Они все size_t используют. И пока я тоже остаюсь на нём, не забывая про косяки неприятные во время разработки. -- 2.48.1