强制类型转换使用时的注意事项

作为一个软件工程师,在我们平时的学习和工作中会经常使用到强制
类型转换的操作,但是有些操作我们不得不需要注意一下;
例如:
我们在一个64位的操作系统中;
unsigned long ulReg1;
unsigned int uiReg2;
int uiReg3;
1. 此时,我们将uiReg3赋值给uiReg2时,在确保我们的数据
是对于一个正数的操作前提下,给uiReg3做一下(unsigned
int)uiReg3的强制转换操作是毫无问题的;但是如果对于一个负数做
这样的操作显然结果并不是我们想要的;
2. 如果我们需要将uiReg2的值赋值给uiReg1,我们执行
ulReg1 = (unsigned long)uiReg2的操作显然问题也不大,这样
我们还是可以正确的获取我们需要的数据的。但是相反的操作就需要
我们谨慎执行了,我们一定要确认参数数值的范围是否正确;
3. 有时候我们明明知道一个unsigned long类型的数据的确是
只有它的低32有效数据,但是我们如果执行uiReg2 = (unsigned
int)uiReg1操作时还是需要谨慎,因为对于一个地址来说,我们执行
这样的操作时非常危险的,对于x86系统,这样的操作时没有问题
的,但是对于一个小端的处理器系统,我们很可能获取到的仅仅时高
位地址上的无效数据,即这样的操作很可能获取的数据就是0,我在工
作中的确遇到了这样的问题,所以我需要写出来提醒自己这样的问题
需要注意;
作为一名底层软件工作者,不论在什么时候都不能忽视大小端的问题,尤其设计到强制类型转换的时候。

你可能感兴趣的:(数据结构,64位,class,强制类型转换)