“感觉还是很有趣的……”
#include <iostream>
int main() {
// 第一部分:unsigned->int
unsigned aa;
std::cout<<"Enter A unsigned number: ";
std::cin>>aa;
int aa_out=aa;
std::cout<<"unsigned: "<<aa<<std::endl;
std::cout<<"signed : "<<aa_out<<std::endl;
// 第二部分:int->unsigned
// int bb;
// std::cout<<"Enter A int number: ";
// std::cin>>bb;
// unsigned bb_out=bb;
// std::cout<<"signed :"<<bb<<std::endl;
// std::cout<<"unsigned:"<<bb_out<<std::endl;
return 0;
}
以上程序分别运行后,会发现以下内容:
一、将一个整数 x 赋给unsigned类型的变量 aa 后,他只表示 [0,2^32-1] 范围内的整数。当x<-2^32-1时,aa = 2^32-1;当-2^32-1 ≤ x ≤ -1时,aa= 2^32-|x|;当0 ≤ x<2^32-1时,aa= x;当x>2^32-1时,aa = 2^32-1;
二、将一个整数x 赋给int类型的变量 bb 后,它只表示 [-2^31,2^31-1] 范围内的整数。当x<-2^31时,bb = -2^31;当x>2^31-1时,bb = 2^31-1。
参考资料:
- 个人动手实践