c - 无效左值 - if 中的 bool 值

标签 c

我正在尝试破解我的 C 程序的主要测试。不幸的是,我真的遇到了问题和圈子。

使用这个表达式:

这是我的完整代码

int prim(int x)
{
 int i,j;
 for(i=x;i>0;i--)
 {
  if(x%i==0 && i=!x)
  {
   printf("%i no prime %i",x);
  }
 }
}  

给我这个错误:10 D:\C\L2\main.c invalid lvalue in assignment

我不明白为什么会这样。有 helper 吗?

最佳答案

是的,您有点混淆了运算符。

试试这个:

if((x%i) == 0 && i != x)

括号将确保在与 == 比较之前先执行模运算(== => Compare, = =>分配)

一点解释:

首先,您使用了赋值运算符(单个 =)。这意味着,您告诉计算机取“0”的值并将其分配给 x%i。但是,x%i 不是一个变量,而是一个方程。这就是您的编译器所提示的。 '无效的左值' -> '不能分配给等号左边的值'。在另一个错误中,您混淆了事物的顺序。这 '!'标记表示“不”。所以我不等于 x。你写的是:i EQUAL NOT x。这实际上可能有效,但很可能不会给你想要的结果。 (因为 NOT 变量会反转它)。

invert 在此上下文中的意思是,它取数字中的每一个和每一个零并将它们调换。假设你有 1000 0001 (unsigned char),它在反转之后是 0111 1110。

关于c - 无效左值 - if 中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343419/

相关文章:

c - 我应该使用哪个错误值?

c - 尝试使用 execle 时预期参数声明符错误

c - 逐个字符打印标准输入直到文件末尾

c - 从 .txt C 读取

c++ - printf ("... %c ...",'\0' ) 和家人——会发生什么?

c - 需要帮助使用 GIOService(GLib、Glib-GIO)实现简单的套接字服务器

c - 使用结构指针的内存分配问题

c - strcmp 拒绝工作

C:填充矩阵

c - ((char) 257) 在 C 中打印 1?