代码一:
unsigned a=1;
int i;
for(i=-a;i<a+1;i++)
{
   cout<<i;
}
cout<<"end!";
///////////////////////
代码二:
unsigned a=1;
int i;
for(i=-a;i<2;i++)
{
   cout<<i;
}
cout<<"end!";哪位牛人能跟我说一下他们执行结果不同的原因吗

解决方案 »

  1.   

    unsigned a=1;
    int i;
    for(i=-a;i<(a+1);i++)
    {
       cout<<i;
    }
    cout<<"end!";就一样了,LZ去补充下基础~~~   关系运算比数学运算符优先级高~~~
      

  2.   

    因为
    for( i=-a ; i<a+1 ; i++ ) 这里有a a是无符号数 ,所以是按无符号书比较 i=-1 无符号数就是0xffff.. ,所以不执行一下循环
    看vc++ 生成的汇编会发现
     jae 跳转地址
    for( i=-a ; i<2 ; i++ )这里是按有符号书比较 
    生成的汇编时
    jge 跳转地址