К сожалению, я застрял на базовом цикле for во время совместного проектирования FPGA.Я хотел бы перебрать массив пикселей.Для этого я хотел бы использовать следующий c-код:
#define WIDTH 640
#define HEIGHT 480
...
int y = 0;
int x = 0;
for(; y < HEIGHT; y++)
for(; x < WIDTH; x++)
printf("X: %4i Y: %4i Color: %x \n", x, y, (0x3FF & x) << 11 | (0x1FF & y) << 2 | col);
Вывод отладочного терминала следующий:
X: 0 Y: 0 Color: 1
X: 1 Y: 0 Color: 801
X: 2 Y: 0 Color: 1001
X: 3 Y: 0 Color: 1801
...
Я понятия не имею, почему внешний цикл будет полностью игнорироватьсяа внутренний работает нормально?Внешний цикл останется со значением индекса «0», что не должно иметь место.
Если я инициализирую значения цикла в индексируемом состоянии условия цикла, он будет работать, как и ожидалось.
#define WIDTH 640
#define HEIGHT 480
...
int y;
int x;
for(y = 0; y < HEIGHT; y++)
for(x = 0; x < WIDTH; x++)
printf("X: %4i Y: %4i Color: %x \n", x, y, (0x3FF & x) << 11 | (0x1FF & y) << 2 | col);
В чем причина того, что первый фрагмент кода не работает?(скомпилировано с gcc, а также с некоторым встроенным компилятором vivado).