很简单的 数据溢出问题。
随便写了个 如下一个很简单的例子。
#include "stdio.h"
int t(int a, unsigned int b)
{
return a/b;
}
int main()
{
printf("%d\n",t(-50,2));
return 0;
}
//输出结果是:2147483623。
原因是unsigned 十无符号的整形不能表示-50/2。所以取低32位的结果就是2147483623
我的问题是:printf("%x\n",t(-50,2));//这个不是以16进制输出来结果值吗,结果十7FFFFFE7
printf("%p\n",t(-50,2));//这个不是结果值的地址吗,结果为什么也是7FFFFFE7?
我哪里理解错了》结果值等于地址值?
一时反映不上来。各位帮忙理下思路。。。。。