快捷搜索:  汽车  科技

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)字符型、整型、浮点型之间的变量通过隐式类型转换,可以进行混合运算(不是所有数据类型之间都可以隐式转换),转换规则如下:运算转换:C语言中不同类型的数据需要转换成同一类型,才可以进行计算。赋值转换:将一种类型的数据赋值给另外一种类型的变量时,发生隐式类型转换。比如:int x = 1.23; // 1.23是double类型,先隐式转换为int float y = 66; // 66是int类型,先隐式转换为float数据类型的提示:在对变量赋值时,若等号两边的数据类型不同,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真(精度降低),所以隐式类型转换不一定是安全的。

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)(1)

C语言是一种强类型语言,当使用一种类型的对象代替另外一种类型的对象进行操作时,必须首先进行类型转换。

类型转换的方式,一般可分为隐式类型转换和显示类型转换(也称为强制类型转换)。

1、隐式类型转换

隐式类型转换由编译器自动进行,不需要程序员干预。

隐式类型转换通常有两种情况:赋值转换和运算转换。

赋值转换:将一种类型的数据赋值给另外一种类型的变量时,发生隐式类型转换。比如:

int x = 1.23; // 1.23是double类型,先隐式转换为int float y = 66; // 66是int类型,先隐式转换为float

数据类型的提示:

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)(2)

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)(3)

在对变量赋值时,若等号两边的数据类型不同,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真(精度降低),所以隐式类型转换不一定是安全的。

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)(4)

运算转换:C语言中不同类型的数据需要转换成同一类型,才可以进行计算。

字符型、整型、浮点型之间的变量通过隐式类型转换,可以进行混合运算(不是所有数据类型之间都可以隐式转换),转换规则如下:

  • 转换按数据长度增加的方向进行,以保证数据精度不降低。比如int类型和double类型相加时,int类型就会被隐式转换为double类型,然后再进行运算;
  • 在条件判断中,非布尔类型自动转换为布尔类型。算术类型的值为0,则转换为false;否则转换为true;
  • 类型转换不改变对象内存的值,当有符号类型转换为无符号类型时,其值可能发生变化。比如:

#include <iostream> using namespace std; int main() { int x = -1; unsigned int y = x; cout << "x: " << x << " y: " << y << endl; return 0; }

运行结果为:

x: -1 y: 42949672952、显示类型转换

隐式类型转换是编译器自动隐式进行的,需要在代码中体现,而显示类型转换由程序员明确指定,C语言显示类型转换也称为强制类型转换。

C语言显示类型比较简单,格式如下:

type var = (type)(expression);

比如下面这段代码:

#include <iostream> using namespace std; int main() { double x = (int)1.5 * 2.5; cout << "x: " << x << endl; double y = (int)(1.5 * 2.5); cout << "y: " << y << endl; return 0; }

运行结果为:

x: 2.5 y: 3

其中,(int)1.5 * 2.5 是先对1.5进行强制类型转换,再和2.5相乘;

而(int)(1.5 * 2.5)通过括号提高优先级,先进行1.5 * 2.5的运算,再进行强制类型转换。

c语言的显式转换和隐式转换(C语言的隐式类型转换和显示类型转换)(5)

猜您喜欢: