c语言初学者的问题

bestware221 2013-02-02 08:15:01
# include<stdio.h>
int main()
{
int a=8;
char b='b';
float c=3.5;
double d=3.55;
double result;
printf("a+b=%d\n",a+b);
printf("b=%d\n",b);
printf("c+d=%f\n",c+d);
printf("a+b=%c\n",a+b);
printf("a+c=%d\n",a+c);
printf("a+c=%f\n",a+c);
printf("b+d=%d\n",b+d);
printf("b+d=%c\n",b+d);
printf("b+d=%f\n",b+d);
result=(a+c)*(b+d);
printf("double=%f\n",result);
return 0;
}

我的运行结果为:
a+b=106
b=98
c+d=7.050000
a+b=j
a+c=0
a+c=11.500000
b+d=858993459
b+d=3
b+d=101.550000
double=1167.825000
请按任意键继续. . .
我的问题是第五行a+c为什么是0,
第七行b+d为什么是858993459
第八行b+d为什么是3
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaokai115 2013-02-02
  • 打赏
  • 举报
回复

// a+c=11.5, 用16进制表示是0x41380000
// 估计你是用的16位的编译器,即sizeof(int)=2
// 当你要求用%d的格式打印这个float值时,printf函数把他的低16位当作整数处理,结果就是0
微光世界· 2013-02-02
  • 打赏
  • 举报
回复
运算精度降低时会出现意想不到的结果,所以你不用纠结出了个什么数,系统随机给的
wade_2003 2013-02-02
  • 打赏
  • 举报
回复
这种在进行计算的时候,低级别向高级别转换,short ->int...
AnYidan 2013-02-02
  • 打赏
  • 举报
回复
a + c 的结果是 float, 你用 %d 输出

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧