中易网

c++中类型转换和类型提升的区别?

答案:3  悬赏:0  
解决时间 2021-02-20 11:50
c++中类型转换和类型提升的区别?
最佳答案
提升是转换的一种
提升的概念是比较高级也比较模糊的
当在函数重载规则中说的类型提升是指
char to int float to double 等短到长的提升

在面向对象中是构造函数的提升,如
string str = "the quick..."
全部回答
Memory中存储的是补码,是根据存入的具体数据的值进行转换为二进制 后的形式,如果超过该数据类型范围则不知道存的形式是什么了,这个 应该是编译器相关的,对越界数的处理方式;(无论存入的时候是用什 么进制表示的,在这里注意+/-单目运算符的作用) 无论要做什么运算都要先看这个数存入内存是什么样子的; 类型提升/截断的时候都是对内存中数据的操作,提升的时候就是需要 进行扩位:对无符号数扩位的时候直接把扩出的位上补零即可(因为unsigned都是正数);有符号 数进行扩位,则进行符号位扩展(sign extension)如果是整数即原最高位 是零则补零,如果是负数即原最高位是1则全补1;进行数据截断的时候是 从低位开始数位数然后截断,这里注意我们使用的一般都是小端机(little Endian) 类型强制转换其实也是对内存中存储的数据的一种呈现方式而已,如:内存 中是8000的时候(即1000 0000 0000 0000),如果用unsigned short int则打印出 来的是2的15次方,如果用short int则打印出来是负2的16次方 在进行算术运算和双目的位运算的时候如果操作数数据类型不一致,首先进 行数据 Arithmetical Conversion类型提升(其实提升就是进行扩位,然后把扩位后的内存二进制代码强制转为某种数据类型之后进行打印),然后 才开始运算 在进行单目位运算的时候,首先进行整型提升,然后开始运算Integer Promotion
转换分为显式转换和隐式转换;显式转换分为C风格显式转换与C++风格显式转换。隐式转换在维持值不变的转换,也有不能维持值不变的转换。前者常被称为提升。详细请见于Bjarne Stroustrup的《C++程序设计语言(特别版)》附录C.6 “隐式类型转换”中的规则性、定义性文字
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
银时穿这衣服的是在第几集?
佳域G4S怎么进入Recovery模式
饶平县美豪服装有限公司地址在什么地方,想过
平均工资怎么算 平均工资是税前还是税后
战后之战董玉清原型
嘉兴有哪几家是卖珠宝的
谁给说一下,这个是什么软件,谁用过吗?我试
美宜佳NO.G808怎么去啊,有知道地址的么
怎么遗忘掉 过去丢脸的事
女生头屑多用什么洗发水好?
国内广告联盟哪个最好
恒星花苑我想知道这个在什么地方
梦见自己捉到两只正在孵蛋的鸟
盐城方鼎低温阀门有限公司在哪里啊,我有事要
集美大学海外学院
推荐资讯
与《七步诗》相比阅读,你会发现,曹植的诗是
刚刚做导热硅胶行业不久,想请问下这个行业的
朋友开了个中介要转发朋友圈怎么写台词
三星scx4623F一体机清零软件
男士包什么牌子比较好
魅蓝X#为什么魅族电池那么不耐用
如果方程组2m +n=2+a和m+2n=4+2a的解满足m+n>
小曹屯地址在哪,我要去那里办事
我有个初步的想法 文殊菩萨 不知道应该带什么
在手机上下了个rom刷机包怎么用
天津福晟通商贸有限公司怎么去啊,有知道地址
明朝那个黄帝喜欢收藏石头
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?