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 怎么理解?%的运算是怎么回事? 展开
{
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 怎么理解?%的运算是怎么回事? 展开
12个回答
展开全部
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果您想存储一个 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语言
展开全部
好问题!
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();
}
用这个多试试,会有较深的理解。
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();
}
用这个多试试,会有较深的理解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7 printf("(1)x=%lf\n",x); double用%lf,下同
12 printf("(2)x=%f\n",x); 改成:
12 printf("(2)x=%.0lf\n",x); 输出就没有小数点后面的数据了
12 printf("(2)x=%f\n",x); 改成:
12 printf("(2)x=%.0lf\n",x); 输出就没有小数点后面的数据了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键是在你输出打印的时候,应该是%d 以十进制形式输出带符号整数(正数不输出符号) ,而不是%f 以小数形式输出单、双精度实数,默认6位小数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询