![]() |
[C#] Из жизни багов: байты в циклах
МиниКвест.
Недавно выловил такой вот баг в программе: Требовалось перебрать все значения байта от 0 до 255. Как оказалось, это сделать не так-то просто :) Очевидный, на первый взгляд код, не работает: Код:
for (byte b = 0; b <= 255; b++) |
так там после 255 идет 0
т.е. если будет число 255, то оно проверится по условию. цикл выполнится, далее число увеличится на 1. А так как это байт, то оно станет = 0 и тогда опять процдет проверку. достаточно было бы поставить < 256 чтобы исключить такое. Это собственно говоря проблема любого языка. |
А да точно. туплю. Просто не ткомпилятора под рукой чтобы проверить. тогда типа так:
Код:
for (byte b = 0; b <= 255; b++) |
Цитата:
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); |
Цитата:
|
Algol, в C-like во всех так будет. Это не бага ЯП, это бага программиста.
|
Цитата:
Я разве спрашивал/утверждал чей это баг? |
Цитата:
Решение: Использовать CompareTo() рабочий пример: Код:
byte b = 0x0; |
Цитата:
|
Цитата:
{ Console.WriteLine(byte.MinValue + i); } rofl, теперь нет нуля? :))))) |
| Время: 05:53 |