为什么输出的不是负数?
一本C++基础书中的一个习题:设整数42486,如果将这个数定义成无符号整数,以有符号数输出时,结果是什么?
代码:
#include <iostream.h>
#include <stdio.h>
void main()
{
unsigned short i;
i=42486;
cout<<"Hexadecimal:"<<hex<<i<<endl
<<"Octal:"<<oct<<i<<endl;
printf("Oct: %o \t Hex: %X \n",i,i);
printf("%d \n",i); //这行结果和预期不同???
int size=sizeof(unsigned short);
cout<<size<<endl;
}
结果有一行和预期的不同?
printf("%d \n",i);
这行以有符号数输出时是42486,按理应该是个负数啊? i的范围:-32768~32767 <42486应该以负数存放?>
不管怎么试也是正的,不知道到底怎么回事??