c语言怎么进行强制类型转换
导读:本文共2759.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 在c语言中,可以通过“(type_name) expression”语句来进行强制类型转换,参数“type_name”表示新类型名称,例如“(float)100”就是将int类型的数值100转换为float类型。强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换... ...
目录
(为您整理了一些要点),点击可以直达。
在c语言中,可以通过“(type_name) expression”语句来进行强制类型转换,参数“type_name”表示新类型名称,例如“(float)100”就是将int类型的数值100转换为float类型。强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换;在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。
数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。
c语言有两种数据类型方式:
自动类型转换:就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。
强制类型转换
下面我们就详细了解一下c语言的强制类型转换。
强制类型转换
自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。
自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。换句话说,自动类型转换不需要程序员干预,强制类型转换必须有程序员干预。
强制类型转换的格式为:
(type_name)expression
type_name
为新类型名称expression
为表达式
例如:
(float)a;//将变量a转换为float类型
(int)(x+y);//把表达式x+y的结果转换为int整型
(float)100;//将数值100(默认为int类型)转换为float类型
请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:
#include<stdio.h>
intmain()
{
intsum=17,count=5;
doublemean;
mean=(double)sum/count;
printf("Valueofmean:%f\n",mean);
}
这里要注意的是强制类型转换运算符的优先级大于除法,因此 sum 的值首先被转换为 double 型,然后除以 count,得到一个类型为 double 的值。
类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。
类型转换只是临时性的
无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。请看下面的例子:
#include<stdio.h>
intmain(){
doubletotal=400.8;//总价
intcount=5;//数目
doubleunit;//单价
inttotal_int=(int)total;
unit=total/count;
printf("total=%lf,total_int=%d,unit=%lf\n",total,total_int,unit);
return0;
}
注意看第 6 行代码,total 变量被转换成了 int 类型才赋值给 total_int 变量,而这种转换并未影响 total 变量本身的类型和值。如果 total 的值变了,那么 total 的输出结果将变为 400.000000;如果 total 的类型变了,那么 unit 的输出结果将变为 80.000000。
扩展知识:常用的算术转换
常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:
常用的算术转换不适用于赋值运算符、逻辑运算符 && 和 ||。让我们看看下面的实例来理解这个概念:
#include<stdio.h>
intmain()
{
inti=17;
charc='c';/ascii值是99/
floatsum;
sum=i+c;
printf("Valueofsum:%f\n",sum);
}
当上面的代码被编译和执行时,它会产生下列结果:
Valueofsum:116.000000
在这里,c 首先被转换为整数,但是由于最后的值是 float 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。
c语言怎么进行强制类型转换的详细内容,希望对您有所帮助,信息来源于网络。