重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:
我们提供的服务有:网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、光泽ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的光泽网站制作公司
(double)a (将a转换成double类型)
(int) (x+y) (将x+y的值转换成int型)
(float)(5%3) (将5%3的值转换成float型)
其一般形式为
(类型名)(表达式)
注意,表达式应该用括号括起来。如果写成
(int)x+y
则只将x转换成整型,然后与y相加
需要说明的是,在强制类型转换时,得到一个所需类型的中间变量,而原来变量的类型未发生变化。例如:
a=(int)x
如果已定义x为float类型变量,a为整型变量,进行强制类型运算(int)x后得到一个int类型的临时值,它的值等于x的整数部分,把它赋给a,注意x的值和类型都未变化,仍为float型。该临时值在赋值后就不再存在了。
从上可知,有两种类型转换,一种是在运算时不必用户干预,系统自动进行的类型转换,如3+6.5。第2种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。如%运算符要求其两侧均为整型量,若x为float型,则x%3不合法,必须用(int)x%3,。强制类型转换运算符优先于%运算,因此先进行(int)x的运算,得到一个整型的中间变量,然后再对3求余。此外,在函数调用时,有时为了使实参与形参类型一致,可以用强制类型转换运算符得到一个所需要类型的参数。
试一下下面的程序怎么样?
int main(void)
{
int aa;
double fx;
printf("Please input x: ");
scanf("%d", aa);
if (aa 0)
{
fx = -5.0 * aa + 27;
}
else if (aa == 0)
{
fx = 7909;
}
else
{
fx = 2.0 * aa - 1;
}
printf("\nF(%d) = %0.lf\n", aa, fx);
return 0;
}
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;这就是一种强制转变方法。
2、long int c;(int)c;如果C变量是长整型,那么之下的语句就是将长整型转变成为整型的过程。
3、()内是要转变的类型,当然相互之间的转变也同时遵循可行性原则。
4、强制转变同时也是一种函数的封装,遵守一定的规则条件,当然也可以自己构造一个强制转换函数。
5、还可以将两个整数运算表达式的结果,强制转换为浮点型数据。
你理解的很正确。两个问题的答案都是:对。
开始val被定义成int,就是说val的地址(就是val)是整形数。但是一旦取出地址val,你可以对这个地址的内容重新定义 (char *)就是告诉编译器这个地址的指针内容当char的指针来读。
这个可以看成是强制类型转换,但不是标准的,标准的强制类型转换是: (char) val 或者 char(val).
在32位的Windows操作系统中,int的数占用4个字节(byte),强制转换成char后自动取最低一个字节(就是8位),这个是自动完成的,你就不用担心了。不过因为pointer被定义成指向char的指针,它加以的时候(pointer++)仅仅加一个字节(8位)。
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
扩展资料:
举例说明
使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:
#include stdio.hint 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语言