首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ 类型转换

C++定义了一组内置类型对象之间转换标准,在必要时候它们被编译器转换 1、任何两种或多种类型数据和变量混合操作时候,最宽数据类型成为目标转换类型(常量和变量都会被改变) 2、不同类型表达式之间赋值时候...,被赋值对象类型成为目标转换类型 3、函数调用实参和形参类型不一致时候,形参对象类型成为目标转换类型 4、函数返回值类型和函数表达式类型不一样时候,函数表达式类型成为目标转换类型 注意:算术运算中两个通用指导准则如下...按照从高顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long...这里有一个小小例外,如果 longint 大小相同,则 unsigned int 等级应位于 long 之上。...; 11 return 0; 12 } 上述代码输出结果竟然是1,原因在于sizeof()返回类型unsigned int,而-1是int,所以-1被转换成了unsigned int

1.2K70
您找到你想要的搜索结果了吗?
是的
没有找到

【C语言】数据类型(基本类型、构造类型类型转换

构造类型 数组 枚举类型 共用体 结构体 类型转换 类型转换类型转换 总结 ---- 前言 最近C语言忘了好多,开始复习ing,记一下近日笔记~ ---- C语言中数据类型分为4中,分别是基本类型...类型转换 类型转换 类型转换是指系统自动进行类型转换。 不同类型数据进行运算,系统会自动将低字节数据类型转换为高字节数据类型,即从下往上转换。...显类型转换类型转换是使用强制类型转换运算符,将一个变量或表达式转化成所需类型。...int类型long类型转换long型数据赋给int变量时,将低16位值赋给int变量,而将高16位截断舍弃(这里假定int型占2个字节)。...将int型数据赋给long变量时,其外部值保持不变,而内部形式有所改变。 无符号整数之间转换:将一个unsigned型数据赋给一个长度相同整型变量时,内部存储方式不变,但外部值可能改变。

1.5K30

Kotlin 变量、常量和类型

对于整数,有四种不同大小类型(Byte、Short、IntLong)。 当初始化没有显类型规范变量时,编译器会自动推断出具有足以表示该值最小范围类型。...如果不超过 Int 范围,则该类型Int。如果超过,则类型Long。若要显指定 Long 值,请将后缀 L 附加到该值。显类型规范触发编译器检查值是否不超过指定类型范围。...类型转换 数值类型之间转换 本节讨论数值类型之间互相转换,数值在进行赋值时采用是显示转换,而在数学计算时采用转换。...Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double toChar(): Char 数学计算与转换 多个数值类型数据可以数学计算...,由于参与进行数学计算数值类型可能不同,编译器会根据上下文环境进行转换

90010

C语言数据强制类型转换

对于某些类型转换编译器可地自动进行,不需人工干预,称这种转换为自动类型转换;而有些类型转换需要编程者显指定,通常,把这种类型转换称为强制类型转换 计算机硬件进行算术操作时,要求各操作数类型具有相同大小...其一般形式为:(类型说明符)(表达式)其功能是把表达式运算结果强制转换类型说明符所表示类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型另一类转换。...纵向箭头表示当运算符两边运算数为不同类型转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换long型, 然后两者再进行运算,结果为long型。...所有这些转换都是由系统自动进行, 使用时你只需从中了解结果类型即可。这些转换可以说是自动,但然,c语言也提供了以显形式强制转换类型机制。 ...(5) 无符号整数  ● 将一个unsigned型数据赋给一个占据同样长度存储单元整型变量时(如:unsignedintunsigned longlongunsigned short→short

1.1K20

C语言编程—强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型一个简单整型中,您需要把 long 类型强制转换int 类型。...您可以使用强制类型转换运算符来把值显地从一种类型转换为另一种类型,如下所示: (type_name) expression 请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到一个浮点数...类型转换可以是,由编译器自动执行,也可以是显,通过使用强制类型转换运算符来指定。在编程时,有需要类型转换时候都用上强制类型转换运算符,是一种良好编程习惯。...整数提升 整数提升是指把小于 intunsigned int 整数类型转换intunsigned int 过程。...常用算术转换 常用算术转换地把值强制转换为相同类型

22030

【C++初阶】C++入门

不是每个编译器都支持auto。 : auto x = 7; //使用整数7对变量x进行初始化,可推断x为int型。...struct在C++中是特殊类型,声明中仅默认成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型。...13、数值类型,如 int、double、float、short、long、signed、unsigned   signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。...其它整数类型signed省略或不省略,含义不变。signed或unsigned可单独作为类型,相当于signed intunsigned int。   ...16、explicit 该关键字作用就是避免自定义类型转换为类类型。 17、export   使用该关键字可实现模板函数外部调用。

1.2K30

Chapter 2: auto

因此,正确用法如下: auto sz = v.size(); 使用auto声明变量来避免类型不匹配时转换带来额外代价 例如: std::unordered_map::reference对象类型,没有发生转换,而该对象实际指向是一个临时std::vector...auto推到出代理类类型时,需要对表达式做代理类类型实际类型静态转换,而不是弃用auto 针对上面的1: auto highPriority = static_cast(features...(w)[5]); 针对上面的2: auto sum = static_cast(m1 + m2 + m3 + m4); 3.总结 auto自动类型推导可以精简代码,避免转换带来开销...,同时增强程序可移植性和减少重构复杂性;但也由于与代理类冲突,造成了一些潜在问题,但是这些问题不是auto引起,而是代理类本身问题,因此显静态类型转换可以保留auto优点,同时保证程序正确性

1.1K70

代码质量分析-整数处理问题

[int]:0 ~ 2^32-1 [signed] long long [int]:-2^63 ~ 2^63-1 unsigned long long [int]:0 ~ 2^64-1 问:C语言中...使用他们是为了明确得定义长度,避免直接使用基础类型时,在不同编译机器上出现差异,定义文件中可以窥见: # if __WORDSIZE == 64 typedef long int int64...// 正常理解c应该是false,a+b=-14 // 但实际上计算式由于两个参数类型不同,会先进行类型转换,有符号数会转为无符号数 // 于是结果b变成了148,相加后,结果必然大于6,...PS:C对类型转换顺序为: double > float > unsigned long > long > unsigned int > int 即操作数类型排在后面的与操作数类型排在前面的进行运算时...,排在后面的类型转换为排在前面的类型

92610

【JVM进阶之路】十二:字节码指令

JVM主要支持byte、short、intlong、float、double、char、reference集中数据类型,每种数据类型操作码分别以不同字母开头,例如iadd表示int类型相加指令码... int long,或者 int double,是不会有精度丢失 intlong float,或者 long double 时,可能会发生精度丢失; byte、char...和 short int 宽化类型转换实际上是发生,这样可以减少字节码指令,毕竟字节码指令只有 256 个,占一个字节。...2)窄化,大类型向小类型转换,比如从 int 类型 byte、short 或者 char,对应指令有:i2b、i2s、i2c; long int,对应指令有:l2i; float int...或者 long,对应指令有:f2i、f2l; double intlong 或者 float,对应指令有:d2i、d2l、d2f。

82330

C++学习——数据类型(强制)转换详解

表 1 数据类型排名 long double double floa unsigned long long int long long int unsigned long int long int unsigned...在这种情况下,unsigned int 将超越 long int,因为它可以保存更高值。 当 C++ 使用运算符时,它会努力将操作数转换为相同类型。这种或自动转换称为类型强制。...细心读者可能已经注意,char、short 和 unsigned short 都未出现在表 1 中,这是因为无论何时在数学表达式中使用这些数据类型值,它们都将自动升级为 int 类型。...但是,乘法结果将被升级为 long int 类型,这样才可以存储 area 中。 ---- ---- 但是,如果接收值变量数据类型低于接收值,那该怎么办呢?...C 风格和预标准 C++ 类型强制转换表达式 虽然 static_cast 是目前使用最多类型强制转换表达式,但是 C++ 还支持两种较旧形式,这也是程序员应该有所了解,即 C 风格形式和预标准

62910

C51 常见数据类型详解

数据类型总结    KEIL C51 编译器所支持数据类型如下表所示: 1、位变量——bit bit 位变量是C51 编译器一种扩充数据类型,它值是一个二进制位,不是0 就是1。...5、指针类型 指针型数据本身就是一个变量,存放是指向另一个数据地址。对于指针定义和标准C语言相似,:char * pt;定义一个指向字符型变量指针。...uchar  c   ;定义一个unsigned char数据变量c 注意:这里并没有增加新数据类型,只是对已有的某种数据类型用另一种符号表示而已。 (2)C语言是一种强类型语言。...类型转换 一、用强制类型转换符“()”对数据类型进行显转换 二、转换顺序如下:      bit→char → intlong → float      signed → unsigned...        如果有几个不同数据类型数据同时参与运算,先将低级别的数据类型转换为高级别类型后再做运算,并且运算结果为高级别数据类型

2.4K20

【揭秘】C语言类型转换时发生了什么?

对于某些类型转换,编译器可以地自动进行,这种转换称为自动类型转换; 而有些类型转换需要程序员显指明,那么通常把这种转换称为强制类型转换。...自动类型转换 自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型另一类转换。...整型类型级别从低到高依次为: int -> unsigned int -> long -> unsigned long -> long long -> unsigned long long 浮点型级别从低到高依次为...图中纵向箭头表示当运算符两边运算数为不同类型转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换long型, 然后两者再进行运算,结果为long型。...我们从中可以看到,虽然x,y变强制转换int型,但是最后输出值不变,强制类型转换没有影响x和y变量原本类型。而上图警告已经说明了一切。

1.2K30

007-014:关于包装类面试题

类型转换是在等号左边和等号右边变量数据类型不一致时候发生,这时候需要将一个数字从一个数据类型转换成另一种数据类型。数据类型转换可以分为转换(自动类型转换)和显转换(强制类型转换)两种。...013:如何理解转换转换需要满足两个条件: 两种数据类型兼容 目标类型取值范围大于源数据类型(低级类型数据转换成高级类型数据)。...例如:byte类型数据赋值给short类型变量时,由于short类型取值范围比较大,这里会发生转换 数据类型级别规定如下(从左到右转换顺序): 数值类型数据转换:byte——>short...——>int——>long——>float——>double 字符类型转换为整数:char——>int 014:如何理解显转换?...当两种类型数据不兼容时,或者目标类型取值范围小于源类型时,就无法进行转换,这时候就需要进行显转换(强制类型转换),例子代码如下: int a = 3; double b = 5.5; a =

67020

enum class 与 enum

>(Color1::blue) << std::endl; // 通过,使用域运算符来访问 二:转换 enum Color {red, blue}; enum class Animal {dog,...; // 可以转换 number = myAnimal; // 错误,不允许转换 number = static_cast(myAnimal); // 正确,显示转换...这种麻烦在结构体当中尤为突出,特别是当我们需要内存对齐和填充处理时候。 其次,当我们使用 enum 时,我们无法决定编译器底层是如何对待 enum (比如:signed 和 unsigned)。...而标准规定,enum class 默认底层数据类型int,也可以自己手动指定数据类型,语法如下, enum class color:unsigned char {red, blue}; enum...class color:long long {yellow, black}; 参考 C++11 enum class & enum struct & enum

72920

小朋友学Python(10):CC++JavaPython关键字

C++风格类型转换。dynamic_cast是动态,需要运行时支持;其它都是静态检查,相比C风格类型转换更加细化,增强了类型安全性。...struct在C++中是特殊类型,声明中仅默认成员和基类访问限定与class不同(struct是public,class是private)。 union是联合体类型。...double、float、longint、short、signed、unsigned 数值类型。 signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。...signed或unsigned可单独作为类型,相当于signed intunsigned int。 double和float专用于浮点数,double表示双精度,float表示单精度。...其它关键字表示整数类型占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。 if,else 条件语句组成部分。

1.3K80
领券