江苏网友来相约

江苏的网友,不如来这里相约吧,我是江苏省海门市人,这里也许能找到你知心朋友。

103 成员713 主题4,022 回复0 张照片

printf是怎么了?

Y
yzf_2000
2001-03-29 23:33
main()
{
int i=3,k;
k=(i++)+(i++)+(i++);
printf("%d\n",k);
}
结果为:
9
而
main()
{
int i=3;
printf("%d\n",(i++)+(i++)+(i++));
}
的结果却正确为:
12
这是为什么???


main()
{
long i=1000;
printf("%d,%ld\n",i,i);
}
结果为:
1000,65536000
而
main()
{
long i=1000;
printf("%ld,%d\n",i,i);
}
的结果却正确为:
1000,1000
这是为什么???
韦
韦陀巷
2001-03-30 20:29
因为。。。
第一个程序里面的和是加到k,k初始值是0
第二个程序里面的和是加到i,i初始值是3
理解了吗?
韦
韦陀巷
2001-03-30 20:36
至于第二程序
你可以
这样试试
printf("%ld,%d%d\n",i,i,i);
要是结果:
1000,1000,65536000

那就是长整可以强制转化为短整,反过来就不行!
Y
yzf_2000
2001-03-31 08:26
回复
谢谢!
一、你的解释说不过去。你可以试试令i=2.
二、printf("%ld,%d,%d",i,i,i);的结果是
1000,1000,0
printf("%ld,%d,%ld",i,i,i);的结果才是
1000,1000,65536000
另
printf("%d,%d,%ld",i,i,i);的结果是
1000,0,1000
1 / 1

登录后回复。