韩红来吧:unsigned int 与in转换问题
来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 11:48:16
(1). 如果你定义了一个unsigned int的变量,并赋一个负值给它会怎么样?
这时该unsigned int变量的内存表示和值为该负数的int变量的内存表示是一致的。
例如:unsigned int i = -1; 因为 -1 在作为有符号数int在内存中的表示为:ox ffff ffff,
所以该赋值操作实际上是把i置为其取值范围内的最大整数。if(i > 0) 的判断结果应该是真。
(2).如果一个操作数是无符号整数,另外一个操作数是有符号整数,那么表达式的结果就是无符号整数。
例如:unsigned int i = 4;
int j = -5;
if(i + j > 0) printf("result is unsigned!\n");
执行的结果是,printf语句被执行。因为 i + j的结果为-1,但将-1作为无符号数对待。
(3).可以想象,如果将无符号数强制转换为有符号数 或是通过无符号数赋值的方式:不改变内存表示,改变对待方式。(其实大多数强制类型转换都是这么做的,是不是全部都是呢?)
例如:int i = 0xffffffff;
printf("i = %d\n",i);
unsigned int n = 0xffffffff;
i = (int) n;
printf("i = %d\n",i);
输出的结果均为为-1。
这时该unsigned int变量的内存表示和值为该负数的int变量的内存表示是一致的。
例如:unsigned int i = -1; 因为 -1 在作为有符号数int在内存中的表示为:ox ffff ffff,
所以该赋值操作实际上是把i置为其取值范围内的最大整数。if(i > 0) 的判断结果应该是真。
(2).如果一个操作数是无符号整数,另外一个操作数是有符号整数,那么表达式的结果就是无符号整数。
例如:unsigned int i = 4;
int j = -5;
if(i + j > 0) printf("result is unsigned!\n");
执行的结果是,printf语句被执行。因为 i + j的结果为-1,但将-1作为无符号数对待。
(3).可以想象,如果将无符号数强制转换为有符号数 或是通过无符号数赋值的方式:不改变内存表示,改变对待方式。(其实大多数强制类型转换都是这么做的,是不是全部都是呢?)
例如:int i = 0xffffffff;
printf("i = %d\n",i);
unsigned int n = 0xffffffff;
i = (int) n;
printf("i = %d\n",i);
输出的结果均为为-1。
unsigned int 与in转换问题
unsigned int 与 in
unsigned 和 int的计算
怎么完成CString与int的转换??
unsigned
[转]java中byte转换int时为何与0xff进行与运算
java中byte转换int时为何与0xff进行与运算
java中String,int,Integer,char 类型转换
Int'l community urges restraint, orderly transition in Egypt
China announces 2nd increase in benchmark int...
Indoor smoking ban in public venues comes int...
First Cuban student to compete in int'l Chine...
3rd Emei Int'l Kungfu Festival held in China'...
China's role in int'l division of labor chang...
INT 函数 (三角与数学函数)
c#中的字符串与数值之间的转换问题
Chinese vice premier urges more participation in int'l cooperation in polar, oceanic research
OChinese vice premier urges more participation in int'l cooperation in polar, oceanic research
【转】C++ int,char,string,CString类型转换(整理总结) - 幽幽...
强化还是削弱——略论“师范教育”向“教师教育”转换的问题与弊端
[转帖] 衔接与转换
风格转换与经济周期
风格转换与经济周期
修炼与阴阳转换