不要说他的储存方式不同!
----------------解决方案--------------------------------------------------------
不说存储方式不同,说什么,
你想想,一个用两个字节,一个用四个字节,怎么读,怎么显示???
----------------解决方案--------------------------------------------------------
你们版主怎么不来是不是嫌分太少了?!@?#!?231
----------------解决方案--------------------------------------------------------
他们指向的地方一样,但是,空间大小不同.这是问题的关键.
----------------解决方案--------------------------------------------------------
类似这样的问题(好像是printf()参数的问题)我记得论坛很久很久以前曾经讨论过.
经过几天的激烈讨论我仍然记得大家都达成了共通----讨论这样的东西对我们根本就没用,除非你想学编译原理
以后大家在写程序的时候一定要避免类似这样的问题发生就可以了,在这里不是想让大家一知半解,实在是对大家没什么帮助.
如果有精力,还不如多写点其他的程序,何苦要死专这个牛角尖不放呢?
----------------解决方案--------------------------------------------------------
我认为,那个题的错误应在于:
int *p1 开始是int 型的,令之指向i,这是没错的.
不过一旦语句:p2=(float *)p1这就出问题了.
因为:这句就等价于:
float *p1;
p1=p2;
那是当然错了.
请记住:指针是没有强制转换的!!!!!!!!!!!!!!!!!
----------------解决方案--------------------------------------------------------
值得研究!
----------------解决方案--------------------------------------------------------
谁能解释这个??? 有这样一段程序: void main( void ) { int i=3,*p1; float a=1.5,*p2; p1=&i;p2=&a; p2=(float *)p1; printf("%d,%d\n",*p1,*p2); } 我觉得输出应该是3,3,可是程序输出结果为:3,0。 为什么???????????? 我认为:p1、p2都是指针变量。在 p1=&i 中,p1放了i的地址。在 p2=(float *)p1 中,把i的地址变成一个浮点数 放到p2, 于是 *p2 就是这个浮点数指向的单元的值。而这个浮点数是未知的,它指向的单元也未曾被赋值。故*p2为0.
----------------解决方案--------------------------------------------------------
如果按照楼上的思路,那
int main()
{
int i=3,*p1=&i;
long int a=5,*p2=&a;
p2=(long int *)p1;
printf("%d,%d\n",*p1,*p2);
}
应该是输出什么??
我觉得天使没说错,问题肯定出在浮点数如何在[计算机中存储]和[printf()]如何处理的方面上.
----------------解决方案--------------------------------------------------------
神,你真是知音呀!!!
呵呵,我就是这个意思!!
其中主要是printf();函数的问题!!!
参数的问题!!!
----------------解决方案--------------------------------------------------------