整型提升

原创 2016年06月01日 15:01:49

K&R C中定义整型提升:
1. 只要一个表达式中用到了整型值,那么类型为char、short int活整型位域(这几者带符号或无符号均可)的变量,以及枚举类型的对象,都可以被放在这个整型变量的位置。
2. 如果1)中的变量的原始类型值域可以被int表示,那么原值被转换为int;否则的话,转为unsigned int。

这段话理解起来是不是有点困难,我们来举个例子理解起来就简单了

    char a = '2';
    char b = '4';
    char c = a + b;
    printf("%c\n",c);

在上述过程中,尽管两个运算符”+”和”=”的操作数全为char型,但在中间计算过程中存在着整数提升:对于表达式a+b ,a、b都是char型,因此被提升至int型后,执行“+”运算,计算结果(int型)再赋值给c(char型),又执行了隐式的类型转换。

是不是觉得很不可思议。
其实可以通过一种方式来验证它:
printf(“%d”, sizeof(a + b));
大家猜猜输出的值是多少?1,对吗?很遗憾,不是1,大小是4
这是为什么呢,显然a+b进行了整型提升,而没有来得及将int型的值赋值给c(char型),所以大小就成了4。

ANSI C规定,编译器如果能保证保证运算结果一致,也可以省略类型提升的操作——这通常出现在表达式中存在常量操作数的时候。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【C语言】整型溢出和整型提升

什么是整型溢出: C语言的整型问题相信大家并不陌生了。对于整型溢出,分为无符号整型溢出和有符号整型溢出。 对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(...
  • Always__
  • Always__
  • 2016年05月11日 01:01
  • 1661

机器学习算法-梯度树提升GTB(GBRT)

Introduction决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。但是同时,单决策树又有一些不好的地方,比如...
  • Dream_angel_Z
  • Dream_angel_Z
  • 2015年08月29日 11:11
  • 14643

华为OJ平台试题 ——数组:整形数组合并

代码: /* * 将两个整型数组按照升序合并,并且过滤掉重复数组元素 */ #include #define N 256 #define M 512 /* * 合并数组,删除重复的,...
  • Cowena
  • Cowena
  • 2015年08月24日 15:42
  • 1468

c语言 无符号数 结构体指针 整型提升

12月21日随笔 12月21日随笔 无符号数 unsigned 结构体指针 整型提升 关于编译顺序的问题 本文有后续详细讲解 无符号数 unsigned 它和普通的变量定义是一样...
  • hanzheng6602
  • hanzheng6602
  • 2017年12月21日 22:18
  • 43

关于C语言整型提升的讲解

C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为“整型提升”。 首先,我们需要知道整型提升的规则: 1.若...
  • ZWE7616175
  • ZWE7616175
  • 2017年07月25日 17:34
  • 123

算术转化和整型提升的奥秘

首先请大家先思考一下3个问题,问题相互之间是有关联的。 1,整型字面值是属于整型家族9种中的哪一种呢? 2,什么是算术转换?如何转换的? 3,什么是整型提升?如何提升的?为什么会有整形提升? 下面...
  • qq_35524916
  • qq_35524916
  • 2017年03月11日 08:21
  • 220

C语言中的数值类型转换:整型提升/寻常算术变化/截断/强制类型转换

整型提升: K&R C中关于整型提升(integral promotion)的定义为: "A character, a short integer, or an integer bit-fie...
  • KingCat666
  • KingCat666
  • 2015年03月30日 19:51
  • 1895

C语言 sizeof 整型提升 类型转换

如有错误请留言告知,谢谢! C语言中整型提升的概念: If an int canrepresent all the values of the original type, then the ...
  • rockrockwu
  • rockrockwu
  • 2012年01月11日 22:34
  • 1283

C进阶指南(1):整型溢出和类型提升、内存申请和管理

原文地址:http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html 翻译地址:http:...
  • doniexun
  • doniexun
  • 2014年07月30日 22:34
  • 442

整型提升 和 位操作

http://blog.chinaunix.net/uid-26758020-id-3143673.html  现在正在学习,看见这个博客真是太好了。。。 1.#对计算机不存在有无符号数...
  • zyx6a
  • zyx6a
  • 2013年04月01日 21:55
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:整型提升
举报原因:
原因补充:

(最多只允许输入30个字)