每日热点:c语言如何进行强制类型转换

时间:2023-01-04 11:09:25       来源:PHP中文网

本教程操作环境:windows7系统、c99版本、Dell G3电脑。

数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。

c语言有两种数据类型方式:


【资料图】

自动类型转换:就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。

强制类型转换

下面我们就详细了解一下c语言的强制类型转换。

强制类型转换

自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。

自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。换句话说,自动类型转换不需要程序员干预,强制类型转换必须有程序员干预。

强制类型转换的格式为:

(type_name) expression
登录后复制

type_name为新类型名称

expression为表达式

例如:

(float) a;  //将变量 a 转换为 float 类型(int)(x+y);  //把表达式 x+y 的结果转换为 int 整型(float) 100;  //将数值 100(默认为int类型)转换为 float 类型
登录后复制

请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数:

#include  int main(){   int sum = 17, count = 5;   double mean;    mean = (double) sum / count;   printf("Value of mean : %f\n", mean ); }
登录后复制

这里要注意的是强制类型转换运算符的优先级大于除法,因此 sum 的值首先被转换为 double 型,然后除以 count,得到一个类型为 double 的值。

类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换的时候都用上强制类型转换运算符,是一种良好的编程习惯。

类型转换只是临时性的

无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。请看下面的例子:

#include int main(){    double total = 400.8;  //总价    int count = 5;  //数目    double unit;  //单价    int total_int = (int)total;    unit = total / count;    printf("total=%lf, total_int=%d, unit=%lf\n", total, total_int, unit);    return 0;}
登录后复制

注意看第 6 行代码,total 变量被转换成了 int 类型才赋值给 total_int 变量,而这种转换并未影响 total 变量本身的类型和值。如果 total 的值变了,那么 total 的输出结果将变为 400.000000;如果 total 的类型变了,那么 unit 的输出结果将变为 80.000000。

扩展知识:常用的算术转换

常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:

常用的算术转换不适用于赋值运算符、逻辑运算符 && 和 ||。让我们看看下面的实例来理解这个概念:

#include  int main(){   int  i = 17;   char c = "c"; /* ascii 值是 99 */   float sum;    sum = i + c;   printf("Value of sum : %f\n", sum ); }
登录后复制

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

Value of sum : 116.000000
登录后复制

在这里,c 首先被转换为整数,但是由于最后的值是 float 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。

【相关推荐:C语言视频教程、编程教学】

以上就是c语言如何进行强制类型转换的详细内容,更多请关注php中文网其它相关文章!

关键词: 强制类型转换 类型转换 数据类型