C++中的转换问题,会的进

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:33:04
在类中定义
unsigned char age:7
然后赋值的时候
int Age
Age=(unsigned char)age
这样的具体作用是什么
先谢谢各位的回答
我还想问的是 为什么要这样设置 为什么不一开始就创建INT 型的age而是UNSIGNED CHAR 再转换呢
有什么具体作用啊
(加分)

//开始就创建INT 型的age而不是UNSIGNED CHAR,那是因为实际上更多的用到的字符型的,只是在有需要的时候才强制转换.
比如你输入一个字符,自然要用char来接收,但有的时候要求输出 ASCII码,只好用强制转换来做.

因为 Age 是int类型
而age 为unsigned char类型

如果不经过转换而直接赋值,操作过程会出现错误...
所以必须有个强制转换

Age=(int)age;

是为了让A类值转为B类值!

原来的age占7位,但转换为INT类型的时候会变成32位(以32位机为例),前面还有25位是补0还是1呢,这个要看age的最开始一位是0还是1,是0前面就全部补0,是1的话,前面就全部补1了,这样的话转换后的数就和未转换的时候不同了,但将age强制转换成unsigned char后,前面就全部补0,不管age的第一位是什么都是.这样就能保证和原来的数大小一样.如果你学过嵌入式开发的话,这个问题就非常简单了

zmmkele讲得很清楚,不过我觉得PcrazyC回答的更加的底层。
楼主这样想就行了,比如说你是三班的,你一个好朋友是四班的(数据类型不同),如果说你的朋友想跑到你们班来上课,可能就会出问题,可能他不懂班的一些规矩,而他只知道他原来班的一些规矩。所以,如果他要过来的话,必须得把三班的规矩交给他(类型转换)。
不知道这个例子能不能帮你理解这个问题,或者把你弄得更晕了~~~
呵呵。