在测试平台中,我编写的程序如下:
int a, b;
scanf_s("%d%d",&a,&b);
unsigned int c = a^b;//this can not pass
unsigned int c = unsigned int(a)^unsigned int(b) //this can pass
int cnt = 0;
while (c){
cnt++;
c = c&(c-1);
}
printf("%dn",cnt);
您的程序中存在一些严重的语法错误,我怀疑它编译了尝试使用以下程序,它应该可以正常工作。
您的代码中存在以下问题。
-
c
被宣布两次 -
将
int
投给unsigned int
有错误int main() { int a, b; scanf_s("%d%d",&a,&b); unsigned int c = a^b;//this can not pass c = (unsigned int)a^( unsigned int )b;//this can pass int cnt = 0; while (c){ cnt++; c = c&(c-1); } printf("%dn",cnt); return 0; }