0x100到底是256还是-256?!蒙了...(为什么只能给10分 -,,-)
int foo(int n)
{
n=n < <24/1 < <23;
return n;
}
int main()
{
printf( "%d ",f(128));
return 0;
}
vc6.0 结果是-256
gcc结果是256
why??!!编译器的问题??
[解决办法]
嗯,我看错了
不过你的调用也太不专业了
应该是foo(128)才对,弄得我眼花。。。
n=n < <24/1 < <23;
-------------
如果编译器先做的 n < <24 的话128 < <24 = 0x80000000,并且没有声明为无符号整数,那么按照有符号int理解,此时是负数,return的值显然也是负数了
如果编译器有优化,先做了 24/1 < <23,那么相当于128 < < 1,返回的是则是正数
这个结果当然跟机器字长有关,如果你用64位的int运算,肯定没这问题