C语言操作符详解(2)

C语言操作符详解(2)

朋友们,今天追秋给大家带来更加细节,更加重要的操作符详解!!!

表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。
同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型

隐式类型转换

C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升

整型提升

//实例1
char a,b,c;

a = b + c;
b和c的值被提升为普通整型,然后再执行加法运算。
加法运算完成之后,结果将被截断,然后再存储于a中。
如何进行整型提升?
整形提升是按照变量的数据类型的符号位来提升的。
下面来看一组示例:
C语言操作符详解(2)_第1张图片
我们发现,字符型的数字相加之后的答案和整形完全不同,那它们是如何计算的下面给大家讲解一下:
首先补充一个知识:在数据类型中,字符型变量的大小为1个字节,也就是8bit位,而整形变量的大小为4个字节,也就是32个bit位。且都是以补码的形式在内存当中储存。
而所谓整形提升,就是将长度小于整形的数据变成与整形长度相同的数据来计算。
下面来看解析:
C语言操作符详解(2)_第2张图片
C语言操作符详解(2)_第3张图片
下面再举一些例子让大家感受一下:
示例一:
C语言操作符详解(2)_第4张图片
解答:对于int和short类型,也就是长度小于整形长度的数据类型,在计算时是需要进行整形提升的,而整形提升之后的a和b的大小就和原来不是一回事了,而c本身就是int类型,不需要整形提升。
示例二:
C语言操作符详解(2)_第5张图片
实例2中的,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof(+c) 是4个字节。
表达式 -c 也会发生整形提升,所以 sizeof(-c) 是4个字节,但是 sizeof© ,就是1个字节。

算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类
型,否则操作就无法进行。下面的层次体系称为寻常算术转换
C语言操作符详解(2)_第6张图片
警告:
但是算术转换要合理,要不然会有一些潜在的问题,如:
float f = 3.14;
int num = f; //隐式转换,会有精度丢失!!!

好了,今天的分享就到这里了,谢谢朋友们的点赞、评论和收藏,你们的喜欢是追秋进步最大的动力!
我们下次再见,白白!

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