关于c语言中的类型转换问题
在vc中运行如下代码:
void main()
{
int a;
double b;
a=5;b=a;
printf("%f\n",b);
b=5.1;a=b;
printf("%d\n",a);
printf("%f\n",5);
printf("%d\n",5.1);
}
输出结果如下:
5.000000
5
0.000000
1717986918
前两个结果没有问题,但是后两个输出我不能够理解。
printf("%f\n",5);不是应该先将5转换成double型吗?为什么不是5.000000而是0.000000?
printf("%d\n",5.1);不是会先将5.1转换成int型吗?为什么不是5而是一个很大的数?
请高人对printf的工作机制说明一下,如果可以将scanf的工作机制也讲讲。