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

main(){floatx;inti;x=3.6;i=(int)xprintf(“x=%f,i=%d",x,i);}结果是x=3.600000,i=3x的结果可以理解,但... 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 怎么理解?%的运算是怎么回事?
展开
 我来答
小耳朵爱聊车
高粉答主

2018-12-03 · 说的都是干货,快来关注
知道大有可为答主
回答量:7378
采纳率:100%
帮助的人:290万
展开全部

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

例如,如果您想存储一个 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语言

shy2850
2009-11-07 · TA获得超过6773个赞
知道大有可为答主
回答量:2505
采纳率:55%
帮助的人:1554万
展开全部
好问题!

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();
}
用这个多试试,会有较深的理解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-11-19 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2014-07-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6168万
展开全部
7 printf("(1)x=%lf\n",x); double用%lf,下同

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

12 printf("(2)x=%.0lf\n",x); 输出就没有小数点后面的数据了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查无此人QQ5
2014-07-27
知道答主
回答量:37
采纳率:0%
帮助的人:14.2万
展开全部
关键是在你输出打印的时候,应该是%d 以十进制形式输出带符号整数(正数不输出符号) ,而不是%f 以小数形式输出单、双精度实数,默认6位小数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式