c语言类型转换为float int a=1; (float)a; printf("%f",a);为什么结果是0.000000,不应该是1.000000的吗

语言类型转换为float 。
int a=1;
(float)a;
printf("%f",a);
为什么结果是0.000000,不应该是1.000000的吗

printf("%f", (float)a); // 输出 1.000000

a = (float) a; // a 还是 int 型。 printf("%f",a); // 输出 0, 格式与类型不配。追问

为什么说printf("%f",a); 格式与类型不配 呢?。

我不是强制转换了吗 (float) a;

追答

a 声明为整型变量,永远是整型变量。printf("%f",a); a 是整型变量,不能用 %f 格式。

printf("%f",(float) a); 输出 表达式 (float) a 的 值,表达式 (float) a 是 浮点型,用 %f 格式输出。

a 声明为整型变量,永远是整型变量。printf("%f",a); a 是整型变量,不能用 %f 格式。

printf("%f",(float) a); 输出 表达式 (float) a 的 值,表达式 (float) a 是 浮点型,用 %f 格式输出。

追问

我知道了,强制转换只是临时性的。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言类型转换为float int a=1; (float)a; printf("%f",a);为什么结 ...
a = (float) a; \/\/ a 还是 int 型。 printf("%f",a); \/\/ 输出 0, 格式与类型不配。

c 语言程序 结果为什么是0.000000
关键在于你定义的i是int型,计算k=1\/i;的时候,其实是先计算1\/i,计算出来的值为0,然后0进行类型转换赋值给k,则k = 0.000000。所以你每次加的其实都是0.000000。这样导致了最后的结果。---您的采纳使我们前进的动力--- ---能言善编团队--- ...

c语言问题,最高分输出是 0.000000
float zgf(float a[2][5],int* row,int* colum)int main(){ float m[2][5];int i,j;float max = 0;int row = 0,colum = 0;printf("输入二维数组的元素:\\n");for(i=0;i<2;i++)for(j=0;j<5;j++)scanf("%f",&m[i][j]);printf("最高分,学生,科目:");max = z...

在C语言里,如果定义变量时INT型,但输出是用%f,为什么结果是0.000000
在输出时如果把%后面的字母用错,则输出的结果都是0. 当然如果是double 和float 等则会输出为0.000000 小数点后默认为6位小数

C语言问题---这个单位换算程序运行,结果是0.000000,用的是float。求解...
1. 您的单位换算程序中,单位换算的顺序可能存在问题。确保在进行任何计算之前,所有的单位都已经转换为同一类型(例如,全部转换为厘米)。2. 在C语言中,使用浮点数进行计算时,需要注意浮点数的表示范围和精度。如果计算结果为0.000000,这可能是因为数值太接近于0,超出了浮点数的表示范围。3. 您...

C语言%f输出为什么小数位都为零了啊
这个与运算符的优先级有关。赋值运算(“=”)运算级比算术运算(“\/”)要低。先进行除法运算,两整数相除得到 0 ,最后执行赋值运算,因为 c 为float 类型,比 int 级高,int自动转为 float类型,即为你的答案0.00000

为什么c语言里浮点型数据按整型格式输出结果是0??
printf("%f", 2) <- 参数"%f"是运行时的,按照规则编译器是不可能知道你希望第二个参数是浮点数类型,所以也就不可能把int类型的2自动转换成浮点类型的2。另外%f需要的是64位的double,现在你只提供了低32位,高32位只能依赖栈里原有的数据。double类型最高12位小于1003,对应的十进制数就肯定...

C语言的结果为什么永远是0.00000,应该怎么改?挺急的。明天就要了!_百 ...
,&n);而不是%lf,后者是用来读入double的 错误2:a=1\/i这里有点问题,在C里两个整数相除的结果还是整除,如果你要取得小数,可以改为比如a=1.0\/i;错误3:你的sum是一个小数,所以你的proc定义就要改为float proc(int n)建议改为double proc(int n),然后将proc中的float也改为double ...

为什么输出a.f是0.000000而不是97.000000?它在内存中是怎么存的
因为float默认转换成double输出,也就是变成了8个字节,后面的4个字节都用0填充,所以输出float就是0

c语言代码输出为0.000000
deo的值 你在前面定义了为整数 而后面你强制转化的是1\/deo的值 整数除整数结果就为整 1\/deo结果等于 0.几几几相当于等于0 float转化的就是0这个值所以等于0.000000 你应该把float(1\/deo)改成 float(1)\/deo或1\/(float(deo))或者sum = sum + 1.0\/deo ...

相似回答