这题的坑点,百思不得其解,求解惑
查看原帖
这题的坑点,百思不得其解,求解惑
890321
mooktian楼主2023/2/5 16:31

题面提示: 给出一个小于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;
}

呼唤大神。。。。。

2023/2/5 16:31
加载中...