读书人

两个C++ 的代码区别解决思路

发布时间: 2012-01-10 21:26:51 作者: rapoo

两个C++ 的代码区别
代码一:
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! ";

哪位牛人能跟我说一下他们执行结果不同的原因吗

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

读书人网 >C#

热点推荐