类型转换

类型转换运算符

匿名 (未验证) 提交于 2019-12-02 23:59:01
・ dynamic_cast:允许对象类型向上转换,即允许派生类向基类转换,但不允许基类向派生类转换,否则返回空指针 ・ const_cast:用于消除const限制 ・ static_cast:同类型转换,允许向上或向下转换,可以将枚举项和整形互相转换 ・ reinterpret_cast:略 来源:博客园 作者: 多弗朗强哥 链接:https://www.cnblogs.com/chendeqiang/p/11483411.html

C,C+和C++它们有什么区别

匿名 (未验证) 提交于 2019-12-02 23:57:01
只有C语言和C++语言,没有C+语言。 1、出现时间不同 C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 2、C程序可以省略函数原型,而C++不可以 一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 3、关键字和变量不同 在C++中还增加了bool型变量和wchar_t型变量:布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量。 那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志

强制类型转换之注意事项

匿名 (未验证) 提交于 2019-12-02 23:57:01
强制类型转换之注意事项 注意事项 : 1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。 2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”. 3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。 4. boolean类型不能发生数据类型转换 代码: 1 public class Demo02DataType { 2 public static void main ( String [] args ) { 3 // 左边是int类型,右边是long类型,不一样 4 // long --> int,不是从小到大 5 // 不能发生自动类型转换! 6 // 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; 7 int num = ( int ) 100L ; 8 System . out . println ( num ); 9 10 // long强制转换成为int类型 11 int num2 = ( int ) 6000000000L ; // 6000000000 大于int类型的取值范围 12 System . out . println ( num2 ); // 1705032704-----造成数据溢出 13 14 // double --> int

Scala类型转换

匿名 (未验证) 提交于 2019-12-02 23:41:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen18677338530/article/details/91430723 值类型隐式转换 自动类型转换说明 object TypeDemo8 { def main(args: Array[String]): Unit = { var n1 = 10 var n2 = 1.1f // float var n3 = n1 + n2 println(n3.isInstanceOf[Float]) } } object TypeDemo9 { def main(args: Array[String]): Unit = { var n4:Byte = 10 var char1:Char = n4 // byte short 和 char 之间不能转换 } } 强制类型转换 强制类型转换说明 object TypeDemo10 { def main(args: Array[String]): Unit = { var num:Int = 2.7f.toInt println(num.isInstanceOf[Int]) } } object TypeDemo11 { def main(args: Array[String]): Unit = { var num1:Int = 10*3.5

Scala值类型和String类型转换

匿名 (未验证) 提交于 2019-12-02 23:41:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen18677338530/article/details/91432128 基本类型转换String object TypeDemo15 { def main(args: Array[String]): Unit = { var a:Int = 5 println((a+"").isInstanceOf[String]) } } String 类型转基本类型 object TypeDemo16 { def main(args: Array[String]): Unit = { var s2:String = "12" var num1:Int = s2.toInt var num2:Float = s2.toFloat var num3:Double = s2.toDouble var num4:Long = s2.toLong println(s2.isInstanceOf[String]) println(num1.isInstanceOf[Int]) println(num2.isInstanceOf[Float]) println(num3.isInstanceOf[Double]) println(num4.isInstanceOf[Long]) } } 注意事项

C语言中void*详解及应用

匿名 (未验证) 提交于 2019-12-02 23:32:01
void在英文中作为名词的解释为“空虚;空间;空隙”;而在C语言中,void被翻译为“无类型”,相应的void *为“无类型指针”。void似乎只有“注释”和限制程序的作用,当然,这里的“注释”不是为我们人提供注释,而是为编译器提供一种所谓的注释。 本文地址: http://www.cnblogs.com/archimedes/p/c-void-point.html,转载请注明源地址。 void的作用: 1.对函数返回的限定,这种情况我们比较常见。 2.对函数参数的限定,这种情况也是比较常见的。 一般我们常见的就是这两种情况: 当函数不需要返回值值时,必须使用void限定,这就是我们所说的第一种情况。例如:void func(int a,char *b)。 当函数不允许接受参数时,必须使用void限定,这就是我们所说的第二种情况。例如:int func(void)。 void指针的使用规则: 1.void指针可以指向任意类型的数据,就是说可以用任意类型的指针对void指针对void指针赋值。例如: int *a; void *p; p=a; 如果要将void指针p赋给其他类型的指针,则需要强制类型转换,就本例而言:a=(int *)p。在内存的分配中我们可以见到void指针使用:内存分配函数malloc函数返回的指针就是void *型,用户在使用这个指针的时候,要进行强制类型转换

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

匿名 (未验证) 提交于 2019-12-02 22:56:40
1. c语言强制类型转换主要用于基础的数据类型间的转换: (type-id)expression//转换格式1 type-id(expression)//转换格式2 c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化: reinterpret_cast<new_type> (expression) 《Effective C++》中将c语言强制类型转换称为旧式转型,c++强制类型转换称为新式转型。 static_cast相当于传统的C语言里的强制转换,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非多态的转换,可以转换指针及其他,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 ③把空指针转换成目标类型的空指针。

数据类型转换

匿名 (未验证) 提交于 2019-12-02 22:56:40
不同类型的变量运算在一起是可以的,先进行类型转换再运算。 转换的过程中,数据遵循一个原则: 范围小的数据类型值(如:byte),可以直接转换为范围大的数据类型值(如:int) 范围大的数据类型值(如:int),不可以直接转换为范围小的数据类型值(如:byte) 数据类型转换按照数据范围从小到大依次列出: byte>short>int>long>float>double 数据类型转换方式分为两种 自动类型转换 表示范围小的数据类型转换成范围大的数据类型,这种方式为自动类型转换 自动类型转换格式: 范围大的数据类型 变量 = 范围小的数据类型值; 如: double d = 1000 ;   或者 int i = 100 ; double d2 = i; 强制类型转换 表示范围大的数据类型转换成范围小的数据类型,这种方式为强制类型转换 强制类型转换格式: 范围小的数据类型 变量 = (范围小的数据类型)范围大的数据类型值; 如 int i = ( int )6.718; // i的值为6 或者 double d = 3.14 ; int i2 = ( int )d; // i2的值为3 原文:https://www.cnblogs.com/Change97/p/9374646.html

java基础语法学习笔记(五)

左心房为你撑大大i 提交于 2019-12-02 22:55:32
继承(inheritance),利用继承,人们可以基于已存在的类构造一个新类。继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以在新类中添加一些新的方法和域,以满足新的需求。 类、超类和子类 class Manager extends Employee { 添加方法和域 } 关键字extends表示继承,在Manage与Employee之间存在着明显的is-a关系。 通过extends构造新类派生于一个已存在的类。已存在的类被称为超类(superclass)、基类(base class)或父类(parent class);新类被称为子类(subclass)、派生类(derived class)或孩子类(child class)。 一般在设计类时,将通用的放置在超类中,而将具有特殊用途的方法放置在子类中。然而超类中的有些方法对子类Manager并不一定适用。这时需要提供一个新的方法来覆盖(override)超类中的这个方法。 子类中不能够直接地访问超类的私有域,如果一定要访问私有域,就必须借助于公有的接口,而getXXX()正是这样的一个接口。调用方式为super.getXXX() 子类的构造器不能访问超类的私有域,所在必须利用超类的构造器对这部分私有域进行初始化,我们可以通过super实现对超类构造器的调用。使用super调用构造器的语句必须是子类构造器的第一条语句

java基础语法学习笔记(一)

此生再无相见时 提交于 2019-12-02 22:51:56
一、java语言的基础理解 1、java是大小写敏感的编程语言 2、类是构建所有java应用程序和applet的构建块,java应用程序中的全部内容都必须放置在类中。 关键字class后面紧跟类名,名字必须以字母开头,后面可以跟字母和数字的任意组合,长度基本上没有限制,但是不能使用java保留字。 虽然java中定义类名的规则很宽松,但是为了能够更好的编写java程序代码,我们还是遵循标准的java命名规范:类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该为大写,俗称”CamelCase”。 3、源代码的文件名必须与公有类的名字相同,并用.java作为扩展名。编译源代码文件后,会刘到一个包含该类字节码的文件,为.class文件。 4、运行编译程序时,java虚拟机将从指定类中的main方法开始执行。因此,在类的源文件中必须包含一个main方法,用户自己定义的方法添加到类中,在main中调用运行。 5、java源文件中的代码块是用一对{}来表示的。每条语句结尾用分号表示结束。 二、注释 java语言有三种表示注释的方式: 1、 单条注释用//,其注释内容从//开始到本行结尾。 2、 多行注释用/*和*/把注释括起来。 3、 以/**开始,以*/结束,这种注释方式可以用来自动生成文档。 三、数据类型 java是一种强类型语言(strongly typed