关于c语言中的各类数值的混合运算

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:48:05
#include "stdio.h"
main()
{
int x=10;
float y=13.0;
char z='a';
printf("%d\n",x+z);
printf("%f\n",x+y);
}
为什么把%f改为%d输出的就是0而不是23呢
有人能解释一下吗?
也就是说x+y不可以用%d输出喽是吗?

float型占4个字节,x+y运算会把x转换为float型来计算,计算完之后的结果23.00是分段储存。23存在高地址,00存在低地址。当用%d来输出x+y的值时,只会将低地址的值输出,也就是0。

%d--%f变的时候不会出现数据丢失。所以虽然x一开始是%d但是用%f输出的答案是对的

可是%f--%d变化的时候会出现数据的丢失,因此会运行出错误的答案。切记切记。

所以很多时候甚至要强制转换类型的

x+y是浮点型的,用整型输出,什么事都有可能发生。