关于类型转换


在编程语言中,类型转换可以分为两种主要类型:隐式转换和显式转换

隐式转换:

隐式转换是在不需要明确指定的情况下自动发生的类型转换。这种转换由编译器自动完成,通常是为了保持表达式的一致性,避免出现错误或警告。

               

1.算术转换:

在C语言中,算术转换按照类型的"等级"进行,高等级的类型会将低等级的类型转换为自己的类型。以下是一些常见的类型,按照从高到低的等级:

  1. long double
  2. double
  3. float
  4. unsigned long long int
  5. long long int
  6. unsigned long int
  7. long int
  8. unsigned int
  9. int
  10. unsigned short
  11. short
  12. char
  13. _Bool
  14. 这个列表是基于一般情况,具体情况可能因编译器和系统而异。在算术运算中,较低等级的类型会被自动提升为较高等级的类型,以便进行运算。这种提升保留了值的精度,防止信息丢失。
  15. 举几个例子:
    char c = 65;
    int i = c; // c 被提升为 int
    
    //---------------------------------------
    char c = 65;
    int i = 10;
    float f = 3.14;
    
    float result = c + i + f; // c 被提升为 int,然后 i 被提升为 float
    //-----------------------------------------
    char c = 65;
    int i = 10;
    long l = 1000;
    
    long result = c + i + l; // c 和 i 被提升为 long

                                                                                                                                            

 2.赋值转换

     1..小类型赋给大类型: 如果将一个小类型的值赋给一个大类型的变量,小类型的值会被自动提升为大类型也就是上面的自动类型转换

int i = 1;
float j = i;//i自动转成float型赋给j但是i还是原来的类型int
//---------------------------------------------------
char c = 'A';
int i = c; // c 被提升为 int

   2.大类型赋给小类型: 如果将一个大类型的值赋给一个小类型的变量,可能发生截断(Truncation)或溢出(Overflow)。编译器可能会发出警告,但不会阻止赋值操作。

int i= 256;
char j= i;
//i:0000 0000 0000 0000 0000 0001 0000 0000
//截断 0000 0000

关于类型转换_第1张图片

 显式转换(强制类型转换)

这是最常见的强制类型转换方式。在使用这个运算符时,将要转换的数据放在括号内,并在括号前面放上目标类型。

强制类型转换运算符 :

这是最常见的强制类型转换方式。在使用这个运算符时,将要转换的数据放在括号内,并在括号前面放上目标类型

int x = 10;
double y = (double)x; // 将整数 x 转换为浮点数 double

类型转换函数:

C 语言中也允许使用类型转换函数进行显式转换。这些函数的名称与目标类型相同,可以通过调用这些函数来进行类型转换。

int x = 10;
double y = double(x); // 使用类型转换函数将整数 x 转换为浮点数 double

你可能感兴趣的:(c++,c语言)