版权声明:本文为博主原创文章,未经博主允许不得转载。
首先,介绍一下两种扩展的定义
转 http://blog.csdn.net/jaylong35/article/details/6160736
能过上面的定义可以看出在C++中,如果把一个char向一个整形转换的时候,就会存在着这个问题
如果你想得到一个正数,那么如果一个字符的ASCII码值是小于零的,而直接用(int)c进行强制类型转换,结果是通过符号扩展得到的也为一个负数。要得到正数,一定要用(int)(unsigned char)c;因为unsigned char去除了c的符号位,所以,这样的类型转换后,再用(int)进行转换得到的就是一个正数。
实例如下:
运行结果:
sign extension: -127
zero extension: 129
请按任意键继续. . .
原文:http://www.cnblogs.com/zhangfeionline/p/5971428.html