Работа с беззнаковыми целыми числамиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Работа с беззнаковыми целыми числами

Сообщение Anonymous »

Я знаю, что целые числа без знака печально известны и обычно избегаются разработчиками C++. У меня есть класс с двумя переменными-членами int, которые не должны содержать отрицательные значения:

Код: Выделить всё

.
.
.
private:
int m_Y_AxisLen;
int m_X_AxisLen;
.
.
.
Я разработал логику функций-членов таким образом, чтобы предотвратить ввод отрицательных чисел. Поэтому я позаботился о том, чтобы этим двум членам не были присвоены отрицательные значения.

Но это также вызывает некоторые предупреждения, когда я использую PVS-Studio. Например здесь:

Код: Выделить всё

for ( int row = 0; row < getY_AxisLen( ); ++row )
{
for ( int column = 0; column < getX_AxisLen( ) - 1; ++column )
{
if ( m_characterMatrix[ row ][ column ] == getFillCharacter( ) )
{
m_characterMatrix[ row ][ column ] = fillCharacter;
}
}
}
PVS-Studio ругает меня за то, что строка индексов и столбец не имеют типа memsize. Вероятно, это означает, что мне следовало использовать строку std::size_t и столбец std::size_t??

Но если бы я сделал это таким образом, он все равно бы жаловался и сказать, что сравнивать беззнаковый целочисленный тип с getY_AxisLen() (который возвращает int) опасно.

Так вот почему я хочу переписать части своего класса чтобы переключиться на это:

Код: Выделить всё

private:
uint32_t m_Y_AxisLen;
uint32_t m_X_AxisLen;
Я смиренно ищу идеи и советы от профессионалов, которые раньше сталкивались с подобными проблемами. Каков будет ваш подход к этим вопросам?

Подробнее здесь: https://stackoverflow.com/questions/704 ... d-integers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»