C, 无符号 int(a)^unsigned int(b) 和无符号 int(a^b) 有什么区别

  • 本文关键字:int 无符号 区别 unsigned c
  • 更新时间 :
  • 英文 :


在测试平台中,我编写的程序如下:

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; 
    }
    

相关内容

最新更新