C编程中的嵌套循环

Nested Loops in C programming

我想知道如何解释下面代码中的行 "if(!(i%j)) break;"。自从“!”符号是一个反相器,这是否意味着下面代码中的粗线会解释为 "if i mod j is equal to zero, invert and then break out of the loop"

非常感谢

int main ()
{
  /* local variable definition */
  int i, j;

  for (i = 2; i < 100; i++) {
    for (j = 2; j <= (i / j); j++)
      if (!(i % j))
        break;
    if (j > (i / j)) printf("%d is prime\n", i);
  }

  return 0;
}

在 C 语言中,if (number) 的计算结果总是为真,除非数字为 0。因此,计算结果为:如果 i mod j 等于 0,基本上,如果 i 是j 的倍数。

"if i mod j is equal to zero, invert and then break out of the loop"

关闭:如果 i mod j 等于 0 则 break.

if ( ! (i % j) ) break;

在 C 中,0 为假,其他均为真。因此,当 i % j0 时,! (i % j)1,因此为真。