开发手册 欢迎您!
软件开发者资料库

C - 类型转换

C类型转换 - 从简单和简单的步骤学习C编程,从基本概念到高级概念,包括C概述,语言基础知识,环境设置,程序结构,基本语法,文字,数据类型,变量,常量,存储类,运算符,决策,函数,范围规则,循环,数组,指针,字符串,结构,联合,位字段,Typedef,输入和输出,头文件,类型转换,错误处理,递归,变量参数,内存管理,预处理器,指令,命令行参数等

类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法.例如,如果要将"long"值存储到一个简单的整数中,则可以将"long"类型键入"int".您可以使用强制转换运算符将值从一种类型转换为另一种类型,如下所示 :

 (type_name)表达式

考虑以下示例,其中强制转换运算符导致一个整数变量除以另一个整数变量作为浮点运算执行 :

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

编译并执行上述代码时,会产生以下结果 :

Value of mean : 3.400000

此处应注意,强制转换运算符优先于除法,因此值 sum 首先转换为 double ,最后它除以计数产生一个double值.

类型转换可以隐含这是由编译器自动执行的,或者可以通过使用强制转换操作符明确指定.每当需要类型转换时,使用强制转换操作符被认为是一种很好的编程习惯.

整数提升

整数提升是指值的过程整数类型"小于" int unsigned int 转换为 int unsigned int .考虑添加带整数的字符的示例;

#include main() {   int  i = 17;   char c = 'c'; /* ascii value is 99 */   int sum;   sum = i + c;   printf("Value of sum : %d\n", sum );}

编译并执行上述代码时,会产生以下结果 :

Value of sum : 116

这里,sum的值是116,因为编译器正在进行整数提升和转换在执行实际的加法运算之前,'c'的值为ASCII.

通常的算术转换

通常的算术转换将其值转换为公共类型.编译器首先执行整数提升;如果操作数仍然具有不同的类型,则它们将转换为在以下层次结构中显示最高的类型 :

通常的算术转换

通常的算术转换不是针对赋值运算符执行的,也不是针对逻辑运算符&& ;;和||.让我们以下面的例子来理解概念 :

#include main() {   int  i = 17;   char c = 'c'; /* ascii value is 99 */   float sum;   sum = i + c;   printf("Value of sum : %f\n", sum );}

编译并执行上述代码时,会产生以下结果 :

Value of sum : 116.000000

这里,很容易理解第一个c转换为整数,但是最终值为double,通常算术转换适用,编译器将i和c转换为'float'并添加它们,产生'float'结果.