最近看书对一个细节有点疑惑,写了个测试代码测试了一下,代码如下:
int main()
{
//unsigned char ucPara=0;
unsigned int ucPara=0;
int nData=0;
for(unsigned int i=0; i<ucPara-1; i++)
{
nData++;
}
printf("nData = %d\n", nData);
}
一、当ucPara为unsiged int时,输出:nData=4294967295(即0xFFFFFFFF),进入循环了。debug看到ucPara-1为4294967295。
二、当ucPara为unsiged char时,输出:nData=0,没有进入循环。debug看到ucPara-1值为-1,这让我无法理解。
于是我想着去看一下堆栈的情况,从低到高排列:
一、0x0019FF3C 00 00 00 00 80 FF…
二、0x0019FF3C 00 CC CC CC 80 FF…
目前我不知道该如何解释这个现象,先记录一下,日后有机会再来解析。