隐式类型转换(整型提升和截断)、强制类型转换的总结

前言

        在写了这么久的习题博客,我发现其中非常爱考查的一个知识就是类型的转换,比如不同类型之间的加减乘除、比较大小和赋值运算等,这里面涉及最为多的就是隐式类型转换,所以在此专门写一个关于类型转换的知识点总结,也希望大家多多支持,一起努力!

一、隐式类型转换

        其中最热门的考点之一就是隐式类型的转换,直接介绍转换规则:

1. 转换规则

1. 低字节的类型转换成高字节的类型(char -> short -> int -> long -> float -> double)

2. 有符号数转换成无符号数

3. 转换的时候,不是改变原变量的类型,而是原变量拷贝一个临时变量,让这个临时变量去改变,原变量不变;

4. 在赋值运算符中,左操作数的字节数小于右操作数,会发生截断,反之为提升

2. 整型提升:

在面对低字节到高字节的转换,发生的就是整型提升

【规则】

1. 无符号数的提升,高位补0

2. 有符号数的提升,高位补符号位

3. 截断

高字节转换为低字节,发生截断

【规则】

1. 截断从低位开始一个一个数,数到对应的字节处截断

2. 截断之后,如果是个无符号数,那最高位的数字就是数值位

3. 截断之后,如果是个有符号数,那最高位的数字就是符号位

二、强制类型转换

这是一种显式的类型转换,直接在变量前面用括号加上我们要转换成的类型

【规则】

1. 不影响原变量的类型,只是拷贝了一个临时变量,作为转换的对象;

2. 同样会发生整型提升和截断;

你可能感兴趣的:(C语言学习,java,开发语言,c语言,c++)