zhengxk89 发布留言 2008-8-3 17:36
求教一个简单的&运算
本人最近刚开始学C,遇到了一个问题,请大家帮忙解决一下,感激不尽哦
main()
{
int i,m;
i=10;
m=&i;
printf("%d,%x\n",i,m);
printf("%d,%d\n",i,m);
}
结果:10,ffd4
10,-40
请问一下这个ffd4和-40到底怎么算出来的啊,能不能详细的说明一下
chengli 发布留言 2008-8-3 18:35
这个跟补码有关
ffd4 用%x输出原值ffd4,也可以用%p,这是相对于一个段地的偏移地址。
用%d输出是有正负的,ffd4的值就是-40.
hundnn 发布留言 2008-8-3 18:42
我这里不能通过编译./.
#include
main()
{
int i,*m; //这里加上指针符号后得到的结果是 10,12ff7x
10,1245052
i=10;
m=&i;
printf("%d,%x\n",i,m); //把i的值以十进制输出;后面把i的地址(m)按十六进制输出
printf("%d,%d\n",i,m); //把i的值以十进制输出;后面把i的地址(m)按十进制输出
}妍清舞 发布留言 2008-8-3 19:34
#include
#include
int main()
{
int i,m;
i=10;
m=&i;——这句好像不行吧
错误提示: invalid conversion from 'int*' to 'int' (Dev-C++)
printf("%d,%x\n",i,m);
printf("%d,%d\n",i,m);
system("pause");
return 0;
}
修改为:
#include
#include
int main()
{
int i=10;
int *m;
m=&i;
printf("i=%d,m=%x=%d\n",i,m,m);
system("pause");
return 0;
}
Dev-C++ 4.9.9.2得出的结果:
i=10,m=22ff54=2293588
解释见2#hundnn 发布留言 2008-8-3 20:11
[un]妍清舞[/un] 在 2008-8-3 19:34 的发言:[/bo]
#include #include int main() { int i,m; i=10; m=&i;——这句好像不行吧 错误提示: invalid conversion from 'int*' to 'int' (Dev-C++) printf("%d,%x\n",i,m); printf("%d,%d ... |
我这边VC得出的结果是i=10,m=12ff7c=1245052
页: [1]