C语言的强制类型转换运算符

main()
{
float x;
int i;
x=3.6;
i=(int)x
printf(“x=%f,i=%d",x,i);
}
结果是x=3.600000,i=3
x的结果可以理解,但是为什么i=3?
%f,%d 怎么理解?%的运算是怎么回事?

强制类型转换是把变量从一种类型转换为另一种数据类型。

例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。

扩展资料:

举例说明

使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

#include <stdio.h>int main()

{
  int sum = 17, count = 5;

double mean;
  mean = (double) sum / count;

printf("Value of mean : %f\n", mean );
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of mean : 3.400000

参考资料来源:百度百科-C语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-07
好问题!

C语言中这样的转换,转换的是和(double)最近的右边的数据,运算级别低于括号,但是高于乘除、加减、赋值符等;而你考虑的k/m的问题:这个关键看进行二元运算的精度的最高级别,二元运算的两个变量中:精度较低的会自动转换为精度较高的;

#include<stdio.h>
main(){
int m,n,num;
char t='0',th;
double dou_1,dou_2,dou_3;
m=5;n=321;
num=t/((float)m/n);
dou_1=(double)(n/m);
dou_2=n/m;
dou_3=(double)n/m;
th=(double)n/m;
printf("%d,%f,%f,%f,%c",num,dou_1,dou_2,dou_3,th);
getch();
}
用这个多试试,会有较深的理解。
第2个回答  2020-11-19

第3个回答  2014-07-27
7 printf("(1)x=%lf\n",x); double用%lf,下同

12 printf("(2)x=%f\n",x); 改成:

12 printf("(2)x=%.0lf\n",x); 输出就没有小数点后面的数据了
第4个回答  2014-07-27
关键是在你输出打印的时候,应该是%d 以十进制形式输出带符号整数(正数不输出符号) ,而不是%f 以小数形式输出单、双精度实数,默认6位小数。
相似回答