类型转换

Posted tzc941243753

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转换相关的知识,希望对你有一定的参考价值。

public class Demo4
public static void main(String[] args)
int i = 128;
byte b = (byte) i;
System.out.println(i);//128
System.out.println(b);//-128强制类型转换 大-小
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量时,强制转换
4.转换的时候可以存在内存溢出或者精度问题
*/
char c = \'a\';
int d = c+1;
System.out.println(d);
System.out.println((char) d);

//操作比较大的数的时候,注意溢出问题
//jdk7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; //-1474836480
System.out.println(total);
long total2=money*years;//-1474836480 默认是int,计算完后才会转换成long
System.out.println(total2);
long total3 =money*(long)years ;
System.out.println(total3);


C++ 介绍⁽⁴⁾|C++ 类型转换

第四章:C++ 类型转换

在此篇教程中,我们将借助示例程序来了解 C++ 类型转换的基础知识。


C++ 允许我们将一种类型的数据转换为另一种类型的数据。这称为类型转换。

C++中有两种类型的转换。

  1. 隐式类型转换

  2. 显式转换(也称为类型转换)


隐式类型转换

由编译器自动完成的类型转换称为隐式类型转换。这种类型的转换也称为自动转换。

让我们看两个隐式类型转换的例子:


示例 1:将 int 类型转换为 double类型

// 隐式类型转换
#include <iostream>
using namespace std;

int main()

{

// 为num_int分配一个int值
int num_int = 9;

// 声明一个双精度型变量
double num_double;

// 隐式转换
// 将int值赋给double变量
num_double = num_int;

cout << "num_int = " << num_int << endl;
cout << "num_double = " << num_double << endl;

return 0;
}

输出:

num_int = 9
num_double = 9

在程序中,我们将一个 int 数据分配给了一 double 变量。

num_double = num_int;

以上,int 值在分配给 num_double 变量之前由编译器自动转换为 double 。这是隐式类型转换的一个例子。


示例 2:将 double类型 自动转换为 int类型

//隐式类型转换
#include <iostream>
using namespace std;

int main()

{


int num_int;
double num_double = 8.88;

// 隐式变换
// 将double值分配给int变量
num_int = num_double;

cout << "num_double = " << num_double << endl;

   cout << "num_int = " << num_int << endl;


return 0;
}

输出:

num_double = 8.88
num_int = 8

在程序中,我们将一个 double 数据赋给了一个 int 变量。

num_int = num_double;

以上, double 值在分配给 num_int 变量之前由编译器自动转换为  int , 这也是隐式类型转换的一个例子。

Note: 由于 int 不能有小数部分,因此在上述示例中小数点后的数字被截断。


转换过程中之数据丢失

正如我们从上面的例子中看到的,从一种数据类型到另一种数据类型的转换容易导致数据丢失。当较大类型的数据转换为较小类型的数据时会发生这种情况。



C++ 显式转换

当用户手动将数据从一种类型更改为另一种类型时,这称为显式转换。这种类型的转换也通常称为类型转换

我们可以通过三种主要方式在 C++ 中使用显式转换。他们是:

  1. C 风格类型转换(也称为转换符号

  2. 函数表示法(也称为旧的 C++ 风格类型转换

  3. 类型转换运算符


C 风格类型转换


顾名思义,这种类型的转换受到 C 编程语言的青睐。它也被称为转换符号

此种风格的语法是:

(data_type)expression;

例如:

// 初始化 int 变量
int num_int = 26;

// 声明 double 变量
double num_double;

// int 转换为 double
num_double = (double)num_int;

函数式转换

我们还可以使用类似符号的函数将数据从一种类型转换为另一种类型。

此种风格的语法是:

data_type(expression);

例如:

// initializing int variable
int num_int = 26;

// declaring double variable
double num_double;

// converting from int to double
num_double = double(num_int);

示例 3:C风格类型 & 函数式类型转换

#include <iostream>

using namespace std;

int main()

{

// 初始化一个 double 变量
double num_double = 3.56;
cout << "num_double = " << num_double << endl;

// C风格 double 转 int
int num_int1 = (int)num_double;
cout << "num_int1 = " << num_int1 << endl;

// 函数式转换 double 转 int
int num_int2 = int(num_double);
cout << "num_int2 = " << num_int2 << endl;

return 0;
}

输出:

num_double = 3.56
num_int1 = 3
num_int2 = 3

以上示例,我们同时使用了 C 风格的类型转换函数风格的转换来进行类型转换并显示结果。由于它们执行相同的任务,因此两者都给我们相同的输出。


类型转换运算符

除了上述两种类型转换,C++ 还有四个用于类型转换的操作符。它们被称为类型转换运算符。他们是:

  • static_cast

  • dynamic_cast

  • const_cast

  • reinterpret_cast

类型转换运算符将在后面章节的教程中会再赘述。




程序算法实验室 zhangJA-Lab

-----------------------------------------------------------------------------


大家好,这是程序算法实验室订阅号欢迎各位关注!此处将持续分享关于Linux、DeepLearning、OpenCV、C++、SLAM、Python等技术干货。