一.基本原理和概念
如:代码
char a,b,c ;
a = b + c ;
该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后,再将数据进行截断存放在内存存放变量 a 的空间中。
(1)提升和截断
先来看一串代码:
#include<stdio.h> int main() { char a = 3; char b = 127; char c = a + b; printf("%d\n",c); return 0; }
猜猜看计算出c的结果是什么呢?
-126!!!是不是很意外啊,别急,接下来让我给你分析分析
首先我们需要知道在C语言中的表达式的计算基本都是在CPU中进行的,但是在CPU中计算的时候是需要整型才能进行计算的(也就是int型)
根据上述原理我们就可以来分析上述代码是如何计算的了,请看下图
我个人认为通过看图可以很好的掌握,所以我制作了上图,还希望读者能够体会和彻底掌握如何来正确的理解和分析整型提升的过程
二.意义
表达式的整型运算要在CPU的相应运算器件内执行,cpu内整型运算器的操作数的字节长度一般就是int的字节长度为4个字节,同时也是cpu的通用寄存器的长度。因此,即是两个char类型的相加,在cpu执行时实际上也要先转换为int型。