C语言中的表达式求值

发布时间:2023-04-14 13:00

        在我们编程的过程中,经常会遇到不同类型的数据之间进行计算,那么如果我们想要预期结果和实际结果相同的话,我们自己首先得知道要怎么计算,这一篇,我来讲一讲表达式求值的那点事,欢迎大家先点赞后阅读啊

首先我们要先提出几个名词:

  1. 整型提升
  2. 算术提升
  3. 优先级和结合性

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

1.整型提升

对于在内存中所占字节小于int的数据,例如char,short类型的数据,在进行加减时会进行隐性转换,转换成int类型的数据后再进行加减。

//例如以下代码
char a = 3;
//3是int型数据,存放在char中会发生截断
//00000000000000000000000000000011(补码)
//截断后                   00000011
short b = 5;
//short同理
//00000000000000000000000000000101(补码)
//截断后                   00000101
int c = a + b;
//a,b要进行加减,需要进行整型提升
//a-> 00000000000000000000000000000011
//b-> 00000000000000000000000000000101
//再进行计算
scanf("%d\n", c); 

整型提升前面添加的是1还是0由符号位说了算,不了解二进制码的同学请移步(11条消息) C语言数据的类型以及在内存中的储存_Joker2373的博客-CSDN博客

2.算术提升

对于在内存中所占字节大于int的数据,我们默认会进行数据的算术提升

因为两个数据类型不同是无法进行各种计算的,当然算术提升也是隐性的

  • long double
  • double
  • float
  • unsigned long int
  • long int
  • unsigned int
  • int

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号