题面提示: 给出一个小于2^32的非负整数
很明显这是要定义一个unsigned int 变量,但是我直接用了int ,为什么能过。
#include <iostream>
using namespace std;
int main(){
int n;
unsigned int a,b;
cin>>n;
a=n<<16;
b=n>>16;
cout<<a+b;
return 0;
}
移位以后强制转化类型为long long,为什么4#6#8#过不了。
#include <iostream>
using namespace std;
int main(){
int n;
long long a,b;
cin>>n;
a=(long long)(n<<16);
b=(long long)(n>>16);
cout<<a+b;
return 0;
}
强制转化成unsigned int 又可以了,实在是迷惑了。
#include <iostream>
using namespace std;
int main(){
int n;
long long a,b;
cin>>n;
a=(unsigned int)(n<<16);
b=(unsigned int)(n>>16);
cout<<a+b;
return 0;
}
呼唤大神。。。。。