можно нарваться на большие проблемы. Посчитайте, например, сколько будет, если из 1 вычесть 2 для беззнакового числа. В таких случаях i надо делать знаковым (signed), тогда всё будет работать даже если 1 - 2.
Змечание правильное, но тут все еще зависит от компиллятора и надо пробовать, чтобы понять как именно оно будет работать на данной платформе. При сравнении >0 по идее должен проверяться только самый старший бит вне зависимости от того знаковой или беззнаковой объявлена переменная.
Хотите поиграть в рулетку? Не вопрос, поиграйте. Я предпочитаю надежный код, который не зависит от компилятора.
Предлагаю проверить и сообщить результат. Я проверяю свой вариант, Вы - свой. Я проверю на ArduinoIDE и Леонардо в железе & Atmel Studio 6.1 на симуляторе.
Но это уже завтра, сегодня конец недели, тяжко.
Для проверки делаем такой код:
void setup()
{
Serial.begin( 57600 );
}
void loop()
{
unsigned int val = 1;
val -= 2;
Serial.print( "val = " );
Serial.println( val );
if( val > 0 )
{
Serial.println( "val > 0" );
}
else
{
Serial.println( "val <= 0" );
}
delay( 1000 );
}
PS Я философствовать тоже умею, но проще проверить и не парить мозг.
Супппппппппер, ЧИТАЕТ! СПАСИБО.
Как я понимаю, для четырёх переменных запись на карту аналогично, а при чтении сдвиг на 4 байта
Только однажды написав так:
unsigned int i;
...
if( i > 0 )
...
i -= 2;
можно нарваться на большие проблемы. Посчитайте, например, сколько будет, если из 1 вычесть 2 для беззнакового числа. В таких случаях i надо делать знаковым (signed), тогда всё будет работать даже если 1 - 2.
Учёл, спасибо.
Змечание правильное, но тут все еще зависит от компиллятора и надо пробовать, чтобы понять как именно оно будет работать на данной платформе. При сравнении >0 по идее должен проверяться только самый старший бит вне зависимости от того знаковой или беззнаковой объявлена переменная.
Хотите поиграть в рулетку? Не вопрос, поиграйте. Я предпочитаю надежный код, который не зависит от компилятора.
Предлагаю проверить и сообщить результат. Я проверяю свой вариант, Вы - свой. Я проверю на ArduinoIDE и Леонардо в железе & Atmel Studio 6.1 на симуляторе.
Но это уже завтра, сегодня конец недели, тяжко.
Для проверки делаем такой код:
PS Я философствовать тоже умею, но проще проверить и не парить мозг.