Относится к этому руководству:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Integer_Types#Integer_Types
Google предлагает использовать int
в течение большей части времени.
Я стараюсь следовать этому руководству, и единственная проблема связана с контейнерами STL.
Например:
1.
void SetElement(int Index, int Value)
{
if (Index > Vector.size()) return;
...
}
Если я использую int
для Index
, здесь я получил предупреждение.
2.
for (int i = 0; i < Vector.size(); ++i)
{
...
}
Когда дело доходит до счетчика циклов, то такое же предупреждение.
Если я объявляю Index
или i
как unsigned int
, тогда он распространяется, я должен объявить больше переменных как unsigned int
и не будет никакой согласованности.
Лучший способ, который я могу думать, - использовать бросок как: if (Index > static_cast<int>(Vector.size()) ...
или for (int i = 0; i < static_cast<int>(Vector.size()); ++i) ...
Но мне действительно не нравятся ролики.
Любые предлагаемые способы?
P.S.
Есть больше причин, чем пример для цикла.
Чтобы использовать только целое число со знаком, я могу избежать предупреждений с подписью/без знака, отливок,
и убедитесь, что каждое значение может быть отрицательным (быть последовательным),
и я всегда могу использовать -1 для недопустимого значения.
Существует много случаев, когда он смешивает счетчик циклов с некоторым элементом константы или структуры и т.д.
Если signed/unsigned не является согласованным, тогда всегда будут предупреждения и отливки,
что раздражает и бессмысленно.
Поэтому я хочу объединить все целые числа, которые нужно подписать.