C++ Atmel Studio 7设置int=0,返回257

C++ Atmel Studio 7设置int=0,返回257,c++,int,atmel,atmelstudio,C++,Int,Atmel,Atmelstudio,当我试图设置索引int=0时,它变成了257。 我在VisualStudio中尝试了以下测试代码,在那里它可以完美地运行 int main() { int index = 0; int Data[24] = { 1, 0, 1, 1 }; //Await the first 4 start bits. do { while (0) //awaiting high on a pin {} if (Data[index] == 0) //checking other pi

当我试图设置索引int=0时,它变成了257。 我在VisualStudio中尝试了以下测试代码,在那里它可以完美地运行

int main() {

int index = 0;
int Data[24] = { 1, 0, 1, 1 };

//Await the first 4 start bits.
do
{
    while (0) //awaiting high on a pin
    {}
    if (Data[index] == 0) //checking other pin for high
        index++;
    else {
        index = 0; //Becomes 257???
    }
} while (index < 4);
}
intmain(){
int指数=0;
int Data[24]={1,0,1,1};
//等待前4个起始位。
做
{
while(0)//在引脚上等待高位
{}
if(Data[index]==0)//检查其他引脚是否存在高电平
索引++;
否则{
索引=0;//变为257???
}
}指数<4;
}
我正在检查第一部分是否如我们预期的那样。我关闭了项目的优化,这样我可以模拟我的代码

这是棘手的部分。出于某种原因。在运行调试器时,我还查看了汇编代码。以下两行将索引更改为256,然后更改为257

            index = 0; //Becomes 257
00000156  STD Y+2,R1        Store indirect with displacement 
00000157  STD Y+1,R1        Store indirect with displacement
   } while (index < 4);
index=0//变成257
00000156标准Y+2,R1存储间接位移
00000157标准Y+1,R1存储间接位移
}指数<4;
只有当索引已经为0时才会发生这种情况。(此时R1为1)

为什么会发生这种情况,我如何避免