将变量m定义为无符号整型,输出时可以用有符号数的格式输出吗?

如题所述

可以! 假设一个16位的无符号整型,最大值是127(二进制:11111111B),如果你按有符号的输出的话,-63(二进制也是:11111111B),它只是把最高位当成符号位看!你用%d输出的话它最高位就看成符号位,用%u输出的话它最高位就不看成符号位罢了。不只这样,你也可以用char字符型输出和浮点型的输出。用char型输出的话它会把11111111B截取一半1111B输出,用double输出的话它则会在前面补8个0追问

#include
using namespace std;
int main()
{
unsigned int m;
int n;
n=m=-218;
cout<<"m="<<m<<",n="<<n<<endl;
return 0;
}

源代码是这样。。。要怎么改呀?

追答

加个类型转换!cout<<"m="<<(int)m<<",n="<<(unsigned int)n<<endl;试下这样!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-16
可以的,你就正常的输出,如果是负数会带上负号的,如果你需要正数输出一个正号,可以在输出前面加一个“+”号就可以了(前提是你得先做一个if或者while的判断)追问

运行结果不是这样的呀。。

追答

难道你输入的是a = -3,而你输出a的时候它不会显示负号?

相似回答