二进制操作数无效

Oll*_*rst -2 compiler-construction assembly gcc objective-c

我有一种方法可以检查数字是偶数还是奇数的天气:

   -(BOOL)numberIsEven:(unsigned int *)x {


  if (x & 1)
 {
  return TRUE;
 }
 else
{
 return FALSE;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,每当我编译它时,我都会收到错误消息:

Invalid operands to binary %
Run Code Online (Sandbox Code Playgroud)

所以它作为模数函数编译到汇编中并且以某种方式失败,但是如果我使用基于模数的函数(可以说更慢),我会得到同样的错误!

帮我堆栈溢出

谢谢 - 奥利

Dav*_*chl 5

x是一个指针。模运算符不适用于指针。

return (*x & 1);
Run Code Online (Sandbox Code Playgroud)

这将取消引用指针,然后返回模的结果(隐式转换为 BOOL)