一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次,找出这两个数字

一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次,找出这两个数字

#include<stdio.h>
int main()
{

	int i = 0;
	int ret = 0;//接受整个数组异或的最终值
	int pos = 0;//标记哪个位置先出现1
	int x = 0,y = 0;
	int arr[] = {1,1,2,2,4,4,8,9};
	for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
	{
		ret ^= arr[i];
	}
	for(i = 0; i < 32; i++)
	{
		if((ret>>i) & 1)
			pos = i;
		break;
	}
	for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
	{
		if((arr[i]>>pos)&1 == 1)//将原数组中的数字分别分成俩组分别再异或一次就得到了结果
		{
			x ^= arr[i];
		}
		else
		{
			y ^= arr[i];
		}
	}
	printf("%d %d",x,y);
	return 0;
}