把int 65535转换为char的结果是?int 99转为 float ,为什么我得的结果是0.000000?

我写的程 序#include "stdio.h"
void main()
{
int a;
a=99;
printf("%f\n",a);
}

int 65535转换为char的结果是 -1, 原因是char只有 1 byte 大小,装不下65535,丢弃了一部分数字,余下的 1 byte 解释为补码。
printf("%f\n",(float) a); 要用强制转换。a 是 int, 要用%d 格式输出。
---
#include <stdio.h>
void main()
{
int a=65535;
float f;
char c;
unsigned char u;
c = (char) a; // 这是有符号char 型,结果为 -1
u = (unsigned char) a; // 如果用无符号char 型,结果为 255
printf("c=%d \n",c);
printf("u=%d \n",u);
a=99;
printf("a=%f ",(float)a); // 强制转换为 float 型
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-06
you can't change the type of a variable is this way....
the correct one is
printf("%f\n",(float)a);
第2个回答  2011-04-06
1、char的内存装不下那么大的int,char与int的关系根据ascii对照,强制赋值的话会切掉内存,变成不知道什么东西,这个跟编译器也有关

2、正确转换格式如楼上
因为int与float虽然存储大小一样,但是计算方式不一样,float有一部分内存用来存储计算浮点数,所以当你把int看做float打印的时候,有一部分的内存被看做了小数,99这个整数比较小,转成两进制是1100011,一个int有4byte也就是32bit全部用来存储整数,99这个数只有4位1其余全部为0,所以当你把它看做float打印的时候。就会出现0这种结果。