Откуда ошибка "iteration 32 invokes undefined behavior"

Написал программку в С++Shell,

типа код
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <ctime>
#define _USE_MATH_DEFINES
#include <cmath>
class _buttoms
{
    };
    unsigned int base[32];
    unsigned int _sin[128];
 int main(void)
{unsigned int res=0;
    for(int i=0;i<32;i++)
    {res=128*sin(M_PI*i/64);
    base[i]=res;
//    std::cout<<"min_i="<< base[i]<< std::endl;
    }
for(int k=0;k<4;)
{
for(int kk=0;kk<32;kk++)
{
_sin[k*32+kk]=128+base[kk];
std::cout<<_sin[k*32+kk]<<","<< std::endl;
}
k++;
// std::cout<<"k="<<k<< std::endl;
for(int ii=0;ii<=32;ii++)
{
_sin[k*32+ii]=128+base[32-ii];
std::cout<<_sin[k*32+ii]<<","<< std::endl;
}
k++;
//std::cout<<"k="<<k<< std::endl;
for(int jj=0;jj<=32;jj++)
{
_sin[k*32+jj]=128-base[jj];
std::cout<<_sin[k*32+jj]<<","<< std::endl;
}
k++;
// std::cout<<"k="<<k<< std::endl;
for(int nn=0;nn<=32;nn++)
{
_sin[k*32+nn]=128-base[32-nn];
std::cout<<_sin[k*32+nn]<<","<< std::endl;
}
k++;
//std::cout<<"k="<<k<< std::endl;
}
}

вроде работает как надо. Адаптировал ее для ардуины в платформио

типа код
#include <Arduino.h>
    int count=0;
    unsigned long time_r;
    unsigned int base[32]={0,6,12,18,24,31,37,43,48,54,60,65,71,76,81,85,90,94,98,102,106,109,112,115,118,120,122,124,125,126,127,127,};
    unsigned int _sin[128];
 
 void fill_Array(void)
{
for(int k=0;k<4;)
{
for(int kk=0;kk<32;kk++)
{
_sin[k*32+kk]=128+base[kk];
 
}
k++;

for(int ii=0;ii<=32;ii++)
{
_sin[k*32+ii]=128+base[32-ii];

Serial.println(k*32+ii);
Serial.println(_sin[k*32+ii]);

}
k++;

for(int jj=0;jj<=32;jj++)
{
_sin[(k*32)+jj]=128-base[jj];

Serial.println(k*32+jj);
Serial.println(_sin[k*32+jj]);

}
k++;

for(int nn=0;nn<=32;nn++)
{
_sin[k*32+nn]=128-base[32-nn];
Serial.println(k*32+nn);
 Serial.println(_sin[k*32+nn]);

}
k++;

}
}

void setup() {
 Serial.begin(115200);
 String str=String(__FILE__).substring((String(__FILE__).lastIndexOf(92)+1));
 Serial.println(str);
 fill_Array();
}

void loop() {
  if(millis()-time_r>8)
  {
    time_r=millis();
    count++;
    if(count>127){count=0;};
    //if(_sin[count]<255)Serial.println(_sin[count]);
    Serial.println(_sin[count]);
    //show_array(count);
  }

}

При компиляции получаю предупреждение для строк 46 и 56:
iteration 32 invokes undefined behavior [-Waggressive-loop-optimizations]
и на полттере порта получаю такую картину:

изменяю условия вывода в строке 64:
if(_sin[count]<255)Serial.println(_sin[count]);

получаю почти правильную последовательность:

Подскажите пожалуйста что я делаю не так

массивы начинаются с нуля

2 лайка

Спасибо, затупил я знатно :0